1

Chrome ブラウザ Dalek JS モジュールのインストールに問題があります。

コンソール出力からの抜粋を次に示します。

npm http 304 https://registry.npmjs.org/abbrev

    > dalek-browser-chrome@0.0.2 install /Users/xxx/Sites/tests/node_modules/dalek-browser-chrome
    > node install.js

Chromedriver installation failed Error: EACCES, permission denied '/Users/xxx/tmp/chromedriver'
    at Object.fs.unlinkSync (fs.js:582:18)
    at rimrafSync (/Users/xxx/Sites/tests/node_modules/dalek-browser-chrome/node_modules/rimraf/rimraf.js:154:8)
    at Promise._successFn (/Users/xxx/Sites/tests/node_modules/dalek-browser-chrome/install.js:176:7)
    at Promise._withInput (/Users/xxx/Sites/tests/node_modules/dalek-browser-chrome/node_modules/kew/kew.js:204:25)
    at Promise._chainPromise (/Users/xxx/Sites/tests/node_modules/dalek-browser-chrome/node_modules/kew/kew.js:244:13)
    at Promise.then (/Users/xxx/Sites/tests/node_modules/dalek-browser-chrome/node_modules/kew/kew.js:144:13)
    at /Users/xxx/Sites/tests/node_modules/dalek-browser-chrome/install.js:175:23
    at loadCbs.length (/Users/xxx/Sites/tests/node_modules/dalek-browser-chrome/node_modules/npmconf/npmconf.js:76:7)
    at Array.forEach (native)
    at /Users/xxx/Sites/tests/node_modules/dalek-browser-chrome/node_modules/npmconf/npmconf.js:75:13
npm ERR! dalek-browser-chrome@0.0.2 install: `node install.js`
npm ERR! `sh "-c" "node install.js"` failed with 1
npm ERR! 
npm ERR! Failed at the dalek-browser-chrome@0.0.2 install script.
npm ERR! This is most likely a problem with the dalek-browser-chrome package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls dalek-browser-chrome
npm ERR! There is likely additional logging output above.

npm ERR! System Darwin 12.4.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "dalek-browser-chrome" "--save-dev"
npm ERR! cwd /Users/xxx/Sites/tests
npm ERR! node -v v0.8.15
npm ERR! npm -v 1.1.66
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/xxx/Sites/tests/npm-debug.log
npm ERR! not ok code 0

Mac OS X 10.8.4 を実行しています。権限の問題のように見えますが、次のようにインストールを実行しています。

sudo npm install dalek-browser-chrome --save-dev

アップデート

最初に sudo なしでこれを実行しようとしましたが、次の結果が得られました。

── ncp@0.4.2
├── kew@0.1.7
├── q@0.9.6
├── adm-zip@0.4.3
├── rimraf@2.2.2 (graceful-fs@2.0.0)
└── npmconf@0.1.2 (once@1.1.1, inherits@2.0.1, osenv@0.0.3, ini@1.1.0, mkdirp@0.3.5, semver@2.1.0, nopt@2.1.2, config-chain@1.1.7)
npm ERR! Error: EACCES, open '/Users/xxx/Sites/tests/package.json'
npm ERR!  { [Error: EACCES, open '/Users/xxx/Sites/tests/package.json']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/xxx/Sites/tests/package.json' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 12.4.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "dalek-browser-chrome" "--save-dev"
npm ERR! cwd /Users/xxx/Sites/tests
npm ERR! node -v v0.8.15
npm ERR! npm -v 1.1.66
npm ERR! path /Users/xxx/Sites/tests/package.json
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/xxx/Sites/tests/package.json'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/xxx/Sites/tests/npm-debug.log
npm ERR! not ok code 0

これに基づいて、須藤で試してみました。

他に何が考えられますか?

4

2 に答える 2

4

chromedriver モジュールが、モジュールのディレクトリ外のファイルにアクセスするインストール スクリプトを実行しようとしています。

これは chromedriver モジュールのバグです。インストール時にモジュール フォルダの外にあるファイルにアクセスしようとしてはいけません。これが絶対に必要な場合は、実行時にユーザーに許可を求め、必要な処理を実行できます。

驚くべきエクスプロイトを防ぐために、npm は、npm nobodyas を実行しているときと同じように、パッケージ ライフサイクル スクリプトを実行しrootます。nobodyユーザーには書き込み権限がないため(/Users/xxx/tmp選択した奇妙なユーザー名ですが)、インストール スクリプトは失敗します。

パッケージが/etc/hosts何かに書き込み、さまざまな銀行の Web サイトの場所として多数のフィッシング サイトの IP アドレスを追加するとしたらどうでしょうか? コマンドをダウンロードして実行した場合、それが悪いことをしたとしたら、間違ったプログラムを信頼してしまったことになります。しかし、単にプログラムをインストールするだけでこのような悪いことが起こる場合、npm はあなたの信頼を裏切ったことになります。

プログラムをダウンロードするように明示的に要求したと主張することもできますが、小さな依存関係を持つ信頼の網は非常に広くなる可能性があるため、夜ぐっすり眠ることは少し危険すぎるため、npm にはこのルールがあります。

于 2013-08-26T16:23:57.653 に答える
2

この問題は の使用に関連している可能性がありsudoます。モジュールはローカルのものであるため、sudo を使用せずにインストールできるはずです。

chromedriver 実行可能ファイルがダウンロードされた後、インストーラーはダウンロードされたファイルのアクセス許可を修正しようとします。これにより、この問題が発生する可能性があります。

sudo かどうかについてさらに読む: http://howtonode.org/introduction-to-npm

于 2013-08-25T16:20:01.700 に答える