【问题标题】:Setting environment variables for a Bamboo build为 Bamboo 构建设置环境变量
【发布时间】:2019-03-18 02:21:16
【问题描述】:

我有一个 Bamboo 版本,其中我需要做的一件事是执行 npm install 命令。这一切都很好,除非它遇到一个依赖项,该依赖项产生另一个节点实例以在子子进程中运行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" - 我不确定还能尝试什么。

【问题讨论】:

  • 这有点明显,但也许您应该尝试 node 并显示其完整路径。
  • 嘿@dave - 我不确定你的意思 - 上面的输出来自 Bamboo 执行的节点任务。能详细点吗?
  • 在我看来,竹子试图运行 node 并失败,因此 'node' is not recognized as an internal or external command ...。因此,请尝试在您的外部程序中使用C:\Program Files\nodejs\node.exe(或其他)。
  • 正如我在问题中提到的 - 手动运行命令时它可以正常工作,并且它还可以正常安装所有其他依赖项。只有当有一个依赖项有其他依赖项时才会失败。
  • 我看到了你的笔记,我正在钓鱼。关键问题似乎是您日志中的错误消息'node' is not recognized as an internal or external command operable program or batch file.。在我看来,从竹子内运行时,这就像路径问题,但我可能是错的。

标签: node.js windows npm bamboo


【解决方案1】:

我有同样的问题,也使用 oracledb 模块。问题是当 npm 开始安装包时,它意识到必须重新构建 oracledb 包。这就是为什么它想要执行“节点重建”命令,但不知道“节点”是什么 - 正如你所提到的,它发生 因为它看不到你的 Windows 代理的环境变量

解决方案是在执行 npm 之前逐一设置环境变量在您的竹子任务中

最好的部分是,你不能使用竹子的 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即时客户端,然后安装节点包。

非常丑陋和混乱的解决方案,但它有效。我只有 Windows 版本才有这个问题。在 linux 代理上构建时,一切正常。

希望这可以帮助:)

【讨论】:

  • 是的,我最终设法让它工作了。我很欣赏您的回复,这绝对是一个可行的解决方案。解决了最初的错误后,我遇到了各种各样的问题。我决定使用一个新的 Windows 机器,看看是否存在由在该代理上构建的其他软件造成的任何潜在中断。原来有。在 Windows 环境下构建这些东西实在是太糟糕了——不幸的是,这是我在项目中无法改变的少数几件事之一。感谢您创建一个帐户来回答我的问题!非常感谢!
【解决方案2】:

要解决此问题,您需要在应用程序路径中指定高级设置

【讨论】:

  • 在您的示例中,Node.js 可执行文件是默认设置的,无法更改。就我而言,下拉列表中没有任何内容...有什么想法吗?
  • 这对我有用,但仍然不明白你为什么需要它,我将它设置在代理运行的服务器上,但没有帮助。
  • 以这种方式配置 PATH 变量解决了我的问题,谢谢!
【解决方案3】:

在 Windows 上,对我来说关键是执行 Path= 而不是 PATH=。一旦我纠正了将以下内容放在环境变量下对我有用的情况:

Path=c:\nodejs\bin

【讨论】:

    【解决方案4】:

    'node'不是内部或外部命令可运行程序或批处理文件。

    我也遇到过这个问题,我就是这样解决的,我在每个任务中都设置了 Node.js 可执行文件,如下所示,

    这使得竹子使用提供的可执行文件,而不是从windows环境路径获取可执行文件路径。

    希望这会有所帮助。

    【讨论】:

    • 不幸的是,这不是我想要的。 Node 任务适用于没有任何其他依赖项的任何依赖项。但是,如果一个依赖项有其他依赖项,它会产生更多 Node 子进程,这似乎无法解决 node
    猜你喜欢
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多