0

Slimerjs Can't resolve required module, works withphantomjsを見たことがありますが、それはまったく何も説明していないので、あえてもう一度質問します。

私はこれをしました:

$ 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ますか https://docs.slimerjs.org/current/api/require.htmlslimerjsのドキュメントの状態に注意してくださいを使用する必要がありますが、スタンドアロンの場合、次のように文句を言うでしょう:require.pathsnode

エラー: require.paths が削除されました。代わりに、node_modules フォルダーまたは NODE_PATH 環境変数を使用してください。

... whileslimerjsはこのエラーを出力しません。それでも、変更しても変更はありません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

4

0 に答える 0