Hi Geert, Thank you, I've just validated it solves my problem (at least in the repro I sent, I am about to test it on the real project now). Sad I did not see the question passing on the mailing list.
I am wondering why the default is true. I can only think of corner cases with encoding for JS files served as content for the client UI. Since we all tend to be UTF-8 (especially in the context of JavaScript and web UI), I am not quite sure why the default is true, as it prevents to use *.js files on the server (esp. annoying for dependencies retrieved from, say, NPM). But well, changing a default value is always, well, changing a default value... Thanks for your help! Regards, -- Florent Georges http://fgeorges.org/ http://h2oconsulting.be/ On 15 July 2016 at 12:53, Geert Josten wrote: > Hi Florent, > > You’re the 3rd to mention this in a short time. There is a ` > load-js-as-binary` property that defaults to true. > > @Dave, maybe we should start thinking about changing that default? > > Cheers, > Geert > > From: <[email protected]> on behalf of Florent > Georges <[email protected]> > Reply-To: MarkLogic Developer Discussion <[email protected]> > Date: Friday, July 15, 2016 at 12:40 PM > To: MarkLogic Developer Discussion <[email protected]> > Subject: [MarkLogic Dev General] Roxy uploads *js files as binary docs > > Hi, > > We are facing a problem with using JavaScript files using the *.js > extension > (that is, not the *.sjs extension), using Roxy. In that case, Roxy does > not > upload them as text documents, but rather as binaries. Which makes them > usuitable to be "require()"d by other SJS files. > > Is there any way to ask Roxy to upload *js files as text on "deploy > modules"? > > Complete repro: > > 1) clone Roxy: "git clone git://github.com/marklogic/roxy.git" > > 2) init Roxy: "./ml init app-name --server-version=8 --app-type=bare" > > 3) edit deploy/build.properties, what I've done: > - app-name=test-js-vs-sjs > - app-port=6640 > - xcc-port=6641 > - local-server=my.vm.name > > 4) bootstrap it: "./ml local bootstrap" > > 5) create the following 5 files in Roxy's src dir: > > == src/lib/lib.sjs AND src/lib/lib.js == > module.exports = { > hello: function(who) { > return 'Hello, ' + who + '!'; > } > }; > > == src/lib/one.js == > module.exports = { > classic: function() { > return require('lib.sjs').hello('world'); > } > }; > > == src/lib/two.js AND src/lib/two.sjs == > module.exports = { > classic: function() { > return require('lib.js').hello('world'); > } > }; > > 6) upload them: "./ml local deploy modules" > > 7) in QConsole, against "test-js-vs-sjs-content" database, run the > following > queries: > > require('one.sjs').classic(); > => 'Hello, world!' > > require('two.js').classic(); > => Error: two.js is not a text document > > require('two.sjs').classic(); > => Error: lib.js is not a text document > > * The first one, using SJS for the top lib and the one it imports, works. > > * The second one, using JS for the top lib and the one it imports, fails. > > * The second one, using SJS for the top lib and JS for the one it imports, > fails as well, showing it is not about the way QConsole reolves the query > it > evaluates, but also how require()'s parameter is resolved for 2 modules > sitting in the modules database. > > Looking at the files in the modules database, using "explore" on QConsole, > shows indeed that JS files are binary files. > > Is there any way to ask Roxy to upload *js files as text on "deploy > modules"? > > Regards, > > > -- > Florent Georges > http://fgeorges.org/ > http://h2oconsulting.be/ > > > > _______________________________________________ > General mailing list > [email protected] > Manage your subscription at: > http://developer.marklogic.com/mailman/listinfo/general > >
_______________________________________________ General mailing list [email protected] Manage your subscription at: http://developer.marklogic.com/mailman/listinfo/general
