我正在进入一个 Node.js 代码库,它要求我通过 NPM 下载一些依赖项,即 jQuery。
在尝试运行npm install jquery时,我不断收到此错误:
npm install jquery
Your environment has been set up for using Node.js 0.8.21 (x64) and NPM C:\Users\Matt Cashatt>npm install jquery npm http GET https://registry.npmjs.org/jquery npm http 304 https://registry.npmjs.org/jquery npm http GET https://registry.npmjs.org/jsdom npm http GET https://registry.npmjs.org/xmlhttprequest npm http GET https://registry.npmjs.org/htmlparser/1.7.6 npm http GET https://registry.npmjs.org/location/0.0.1 npm http GET https://registry.npmjs.org/navigator npm http GET https://registry.npmjs.org/contextify npm http 304 https://registry.npmjs.org/htmlparser/1.7.6 npm http 304 https://registry.npmjs.org/xmlhttprequest npm http 304 https://registry.npmjs.org/location/0.0.1 npm http 304 https://registry.npmjs.org/navigator npm http 304 https://registry.npmjs.org/jsdom npm http 304 https://registry.npmjs.org/contextify npm http GET https://registry.npmjs.org/bindings npm http GET https://registry.npmjs.org/cssom npm http GET https://registry.npmjs.org/cssstyle npm http GET https://registry.npmjs.org/request npm http 304 https://registry.npmjs.org/bindings > contextify@0.1.4 install C:\Users\Matt Cashatt\node_modules\jquery\node_module s\contextify > node-gyp rebuild C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify>node "C:\Progr am Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\b in\node-gyp.js" rebuild npm http 304 https://registry.npmjs.org/cssstyle npm http 304 https://registry.npmjs.org/cssom npm http 304 https://registry.npmjs.org/request gyp ERR! configure error gyp ERR! stack Error: Can't find Python executable "python", you can set the PYT HON env variable. gyp ERR! stack at failNoPython (C:\Program Files\nodejs\node_modules\npm\nod e_modules\node-gyp\lib\configure.js:113:14) gyp ERR! stack at C:\Program Files\nodejs\node_modules\npm\node_modules\node -gyp\lib\configure.js:82:11 gyp ERR! stack at Object.oncomplete (fs.js:297:15) gyp ERR! System Windows_NT 6.1.7601 gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu les\\node-gyp\\bin\\node-gyp.js" "rebuild" gyp ERR! cwd C:\Users\Matt Cashatt\node_modules\jquery\node_modules\contextify gyp ERR! node -v v0.8.21 gyp ERR! node-gyp -v v0.8.4 gyp ERR! not ok npm ERR! error rolling back Error: ENOTEMPTY, rmdir 'C:\Users\Matt Cashatt\node_ modules\jquery\node_modules\jsdom\node_modules\request\tests' npm ERR! error rolling back jquery@1.8.3 { [Error: ENOTEMPTY, rmdir 'C:\Users\M att Cashatt\node_modules\jquery\node_modules\jsdom\node_modules\request\tests'] npm ERR! error rolling back errno: 53, npm ERR! error rolling back code: 'ENOTEMPTY', npm ERR! error rolling back path: 'C:\\Users\\Matt Cashatt\\node_modules\\jque ry\\node_modules\\jsdom\\node_modules\\request\\tests' } npm ERR! contextify@0.1.4 install: `node-gyp rebuild` npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1 npm ERR! npm ERR! Failed at the contextify@0.1.4 install script. npm ERR! This is most likely a problem with the contextify package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get their info via: npm ERR! npm owner ls contextify npm ERR! There is likely additional logging output above. npm ERR! System Windows_NT 6.1.7601 npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery" npm ERR! cwd C:\Users\Matt Cashatt npm ERR! node -v v0.8.21 npm ERR! npm -v 1.2.11 npm ERR! code ELIFECYCLE npm ERR! Error: ENOENT, lstat 'C:\Users\Matt Cashatt\node_modules\jquery\node_mo dules\jsdom\node_modules\request\tests\test-pipes.js' npm ERR! If you need help, you may report this log at: npm ERR! <http://github.com/isaacs/npm/issues> npm ERR! or email it to: npm ERR! <npm-@googlegroups.com> npm ERR! System Windows_NT 6.1.7601 npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "jquery" npm ERR! cwd C:\Users\Matt Cashatt npm ERR! node -v v0.8.21 npm ERR! npm -v 1.2.11 npm ERR! path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsdom\node_ modules\request\tests\test-pipes.js npm ERR! fstream_path C:\Users\Matt Cashatt\node_modules\jquery\node_modules\jsd om\node_modules\request\tests\test-pipes.js npm ERR! fstream_type File npm ERR! fstream_class FileWriter npm ERR! code ENOENT npm ERR! errno 34 npm ERR! fstream_stack C:\Program Files\nodejs\node_modules\npm\node_modules\fst ream\lib\writer.js:284:26 npm ERR! fstream_stack Object.oncomplete (fs.js:297:15) npm ERR! npm ERR! Additional logging details can be found in: npm ERR! C:\Users\Matt Cashatt\npm-debug.log npm ERR! not ok code 0 C:\Users\Matt Cashatt>
看起来失败是由于缺少 Python 安装。好吧,我已经安装了 Python,设置了变量,然后重新启动,仍然是错误。
关于我缺少什么的任何线索?
你的问题是你 没有 设置环境变量。
该错误清楚地说明了这一点:
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
在您的评论中,您说您这样做了:
set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
这很好,但这并没有设置PYTHON变量,它设置了PYTHONPATH变量。
PYTHON
PYTHONPATH
同时,仅使用该set命令只会影响当前cmd会话。cmd如果您在那之后重新启动,正如您所说的那样,您最终会得到一个没有设置该变量的全新会话。
set
cmd
有几种方法可以永久设置环境变量——最简单的是在 XP 的系统控制面板中,这在 Vista 中当然不同,在 7 中再次不同,在 8 中再次不同,但你可以 google 为它。
或者,只需set在命令之前执行正确的操作npm,而无需在其间重新启动。
npm
您可以通过执行配置脚本尝试执行的完全相同的操作来测试您是否做对了:在运行之前npm,尝试运行%PYTHON%。如果你做对了,你会得到一个 Python 解释器(你可以立即退出)。如果你得到一个错误,你没有做对。
%PYTHON%
这有两个问题:
set PYTHON=%PYTHON%;D:\Python
首先,您设置PYTHON为;D:\Python. 额外的分号适用于以分号分隔的路径列表,例如PATHor PYTHONPATH,但不适用于单个值,例如PYTHON. 同样,当您想向路径列表添加另一个路径时,向现有值添加一个新值是您想要的,而不是单个值。所以,你只想要set PYTHON=D:\Python.
;D:\Python
PATH
set PYTHON=D:\Python
其次,D:\Python不是您的 Python 解释器的路径。类似于D:\Python\Python.exe, 或D:\Python\bin\Python.exe. 找到正确的路径,确保它可以自己运行(例如,键入D:\Python\bin\Python.exe并确保您获得了 Python 解释器),然后设置变量并使用它。
D:\Python
D:\Python\Python.exe
D:\Python\bin\Python.exe
所以:
set PYTHON=D:\Python\bin\Python.exe
或者,如果您想使其永久化,请在控制面板中执行等效操作。