slimerjs Не удается разрешить необходимую кодировку модуля

Я видел slimerjs Не могу разрешить необходимый модуль, работает с phantomjs, но это абсолютно ничего не объясняет, поэтому я позволю себе задать вопрос еще раз.

Я сделал это:

$ npm install -g encoding
encoding@0.1.12 /home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules/encoding
└── iconv-lite@0.4.13

Так что, видимо, оно там должно быть?

Сейчас я пробую этот тестовый скрипт, как указано в https://www.npmjs.com/package/encoding - давайте назовем его test_modload.js:

var encoding = require('encoding');

... и я пытаюсь запустить его с node:

$ node test_modload.js
module.js:338
    throw err;
    ^

Error: Cannot find module 'encoding'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:286:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/path/to/test/test_modload.js:1:78)
    at Module._compile (module.js:434:26)
    at Object.Module._extensions..js (module.js:452:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:475:10)

Видимо, здесь я должен использовать NODE_PATH:

NODE_PATH=/home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules node test_modload.js

... и эта команда проходит нормально (т.е. ничего не возвращает и не печатает ошибок).

Но что, если мы попробуем это с casperjs? Сценарий становится:

var encoding = require('encoding');
var casper = require('casper').create();
casper.run();

... и если я бегу с:

/home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules/casperjs/bin/casperjs test_modload.js

... опять все нормально (т.е. ничего не возвращает и не печатает ошибок).

Но давайте попробуем это с casperjs с slimerjs двигатель:

$ SLIMERJSLAUNCHER=/usr/bin/firefox46 /home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules/casperjs/bin/casperjs --engine=slimerjs test_modload.js 

Script Error: Module: Can not resolve "encoding" module required by main located at file:///home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules/casperjs/bin/bootstrap.js
       Stack:
         -> file:///home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules/casperjs/bin/bootstrap.js: 350

Эх... наверное NODE_PATH пропал, отсутствует?

$ NODE_PATH=/home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules SLIMERJSLAUNCHER=/usr/bin/firefox46 /home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules/casperjs/bin/casperjs --engine=slimerjs test_modload.js 

Script Error: Module: Can not resolve "encoding" module required by main located at file:///home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules/casperjs/bin/bootstrap.js
       Stack:
         -> file:///home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules/casperjs/bin/bootstrap.js: 350

Черт, у меня кончились варианты. Что мне теперь делать, как мне получить encoding работать с slimerjs? Обратите внимание, что slimerjs Документы указывают в https://docs.slimerjs.org/current/api/require.html что следует использовать require.pathsОднако для node автономно, он будет жаловаться с:

Ошибка: require.paths удален. Вместо этого используйте папки node_modules или переменную среды NODE_PATH.

... в то время как slimerjs не выводит эту ошибку; но все равно, без изменений, если я сделаю require.paths.push('/home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules'); - он все еще "не может разрешить" модуль кодирования ".

Просто чтобы убедиться, что у меня правильный путь, вот список:

$ ls /home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules
casperjs  encoding  npm  utf8  zombie
$ ls /home/USERNAME/.nvm/versions/node/v4.0.0/lib/node_modules/encoding/
lib  LICENSE  node_modules  package.json  README.md  test

... так что, видимо, модуль есть.

Итак, как же я могу получить slimerjs найти и использовать encoding модуль в скрипте?

0 ответов

Другие вопросы по тегам