我有一个 Bamboo 构建,我需要做的其中一件事是执行 npm install
命令。这一切都很好,除非它遇到一个依赖项,该依赖项会生成另一个 Node 实例以在子子进程中运行 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'.
它说 Node 不是可识别的命令,但我可以确认它肯定在系统路径中,如果我通过命令提示符手动执行命令,依赖项安装正常(更不用说,所有其他依赖项了到这个安装好了)。
有谁知道如何解决这个问题?我尝试在 Windows 中设置系统路径,并尝试通过添加以下环境变量在 Bamboo 任务本身中设置我自己的环境变量:PATH="C:\Program Files\nodejs"
- 我不确定还能尝试什么。
最佳答案
我有同样的问题,也是使用 oracledb 模块。问题是当 npm 开始安装包时,它意识到必须重建 oracledb 包。这就是为什么它想要执行“Node 重建”命令,但不知道“Node ”是什么 - 正如您所提到的,它发生了因为它没有看到您的 Windows 代理的环境变量。
解决方案是在执行 npm 之前逐一设置环境变量,在您的 bamboo 任务中。
最好的部分是,你不能使用 bamboo 的 npm 任务(尽管它在高级选项下有一个环境变量参数 - 它对我不起作用)。您必须编写一个普通脚本任务,看起来像这样:
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 即时客户端,然后安装 Node 包。
非常丑陋和困惑的解决方案,但它有效。我只有在 Windows 版本中才会遇到这个问题。在 Linux 代理上构建时,一切正常。
希望这可以帮助:)
关于node.js - 为 Bamboo build设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33072795/