安装Dalek JS模块时出错 - Chrome浏览器

时间:2013-08-25 09:23:38

标签: npm dalekjs

我在安装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

基于此,我尝试用Sudo。

知道它可能是什么吗?

2 个答案:

答案 0 :(得分:4)

chromedriver模块正在尝试运行一个安装脚本,该脚本触及模块目录之外的文件。

这是chromedriver模块的一个错误。它不应该在安装时尝试触摸其模块文件夹之外的任何文件。如果这是绝对必要的,它可以在运行时请求您的许可并执行它需要做的事情。

为了防止出现令人惊讶的漏洞,当您以nobody运行npm时,npm将包生命周期脚本作为root运行。 nobody用户无权写入/Users/xxx/tmp(您选择的奇怪用户名,顺便说一句),因此安装脚本失败。

如果软件包要写入/etc/hosts或其他内容,并添加一堆网络钓鱼网站IP地址作为各种银行网站的位置,该怎么办?如果您下载命令,然后运行它,它会做一些不好的事情,好吧,你搞砸了并且信任了错误的程序。但是如果只是简单地安装程序会做一些像这样的坏事,那么npm就会侵犯你的信任,我尽量不让这种情况发生。

你可能会争辩说你已明确要求下载该程序,但由于具有小依赖关系的信任网络可以变得非常广泛,所以对我来说睡眠很有点太危险,所以这就是为什么npm有这个规则。

答案 1 :(得分:2)

问题可能与使用sudo有关, 该模块是本地模块,因此您应该能够在不使用sudo的情况下安装它。

下载chromedriver可执行文件后,安装程序会尝试修复下载文件的权限,这可能会导致此问题。

进一步阅读sudo与否:http://howtonode.org/introduction-to-npm