我有一个Bamboo构建,我需要做的一件事就是执行npm install
命令。这一切都很顺利,除非它遇到一个依赖项,该依赖项会生成另一个节点实例,直到在子子进程中运行12-Oct-2015 12:54:12
12-Oct-2015 12:54:12
12-Oct-2015 12:54:12 D:\bamboo-home\xml-data\build-dir\EC-ECB-BUIL\server\node_modules\oracledb>if not defined npm_config_node_gyp (node "c:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node rebuild )
12-Oct-2015 12:54:12 'node' is not recognized as an internal or external command,
12-Oct-2015 12:54:12 operable program or batch file.
12-Oct-2015 12:54:22 npm ERR! Windows_NT 5.2.3790
12-Oct-2015 12:54:22 npm ERR! argv "c:\\Program Files\\nodejs\\node.exe" "c:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
12-Oct-2015 12:54:22 npm ERR! node v4.1.2
12-Oct-2015 12:54:22 npm ERR! npm v2.14.4
12-Oct-2015 12:54:22 npm ERR! code ELIFECYCLE
12-Oct-2015 12:54:22
12-Oct-2015 12:54:22 npm ERR! oracledb@0.6.0 install: `node-gyp rebuild`
12-Oct-2015 12:54:22 npm ERR! Exit status 1
12-Oct-2015 12:54:22 npm ERR!
12-Oct-2015 12:54:22 npm ERR! Failed at the oracledb@0.6.0 install script 'node-gyp rebuild'.
。发生这种情况时,我收到以下错误:
PATH="C:\Program Files\nodejs"
它说节点不是公认的命令,但我可以确认它肯定在系统路径中,如果我通过命令提示符手动执行命令,依赖关系安装正常(更不用说,全部安装好的其他依赖项安装得很好。
有谁知道怎么解决这个问题?我尝试在Windows中设置系统路径,并尝试通过添加以下环境变量在Bamboo任务中设置自己的环境变量:sub('\\s*,.*','', X)
- 我不确定是什么别的尝试。
答案 0 :(得分:4)
我遇到了同样的问题,也使用了oracledb模块。问题是,当npm开始安装软件包时,它意识到必须重建oracledb软件包。这就是为什么它想要执行“节点重建”命令,但不知道“节点”是什么 - 如你所提到的那样,它发生因为它没有看到你的windows代理的环境变量。
解决方法是在执行npm之前逐个设置environmet变量,在竹任务中 。
最好的部分是,你不能使用bamboo的npm任务(尽管它在高级选项下有env。变量的参数 - 它对我来说不起作用)。你必须写一个普通脚本任务,看起来像那样:
REM #Set environment variables
set PATH=........;C:\path\to\nodejs\;........
set OCI_INC_DIR=C:\path\to\oracle\instantclient\sdk\include
set OCI_LIB_DIR=C:\path\to\oracle\instantclient\sdk\lib\msvc
REM #Install node modules
npm i
因此,从Windows设置复制的整个PATH变量必须包含nodejs的路径!设置oracle即时客户端,然后安装节点包。
真的很难看并搞砸了解决方案,但它确实有效。我只有Windows版本才有这个问题。在Linux代理上构建时,一切都按预期工作。
希望这有助于:)
答案 1 :(得分:2)
答案 2 :(得分:0)
在Windows上,我的关键是做Path =而不是PATH =。一旦我纠正了案例,将以下内容置于环境变量下面为我工作:
Path=c:\nodejs\bin
答案 3 :(得分:-1)