使用不同版本的 Node 的 Azure Devops VSTS 构建代理
Azure Devops VSTS build agent using different version of Node
我在本地运行的项目运行良好,npm install 命令成功完成。我正在使用 Node 11.5 并且最近安装了文件加载器,没有任何问题。
然而,当我将构建推送到 VSTS 并且它 运行 'npm install' 命令时,我在日志输出中注意到由于某种原因它使用 Node 12.13 而直到此时它一直是 Node 11.5。该命令未成功完成并失败并显示以下内容:
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual
Studio17\Enterprise\MSBuild.0\Bin\MSBuild.exe` failed with exit code:
1
gyp ERR! stack at ChildProcess.onExit
(D:\a\s\Navico.Global\Navico.Global.Web\node_modules\node-
gyp\lib\build.js:262:23)
gyp ERR! stack at ChildProcess.emit (events.js:210:5)
gyp ERR! stack at Process.ChildProcess._handle.onexit
(internal/child_process.js:272:12)
gyp ERR! System Windows_NT 10.0.14393
gyp ERR! command "C:\Program Files\nodejs\node.exe"
"D:\a\1\s\Navico.Global\Navico.Global.Web\node_modules\node-
gyp\bin\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--
libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd D:\a\s\Navico.Global\Navico.Global.Web\node_modules\node-
sass
gyp ERR! node -v v12.13.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed with error code: 1
npm verb lifecycle node-sass@4.10.0~postinstall: unsafe-perm in lifecycle true
到目前为止我尝试过的:
- 提交包-lock.json 因为一开始没有提交。
- 已将 Node-sass 从 4.9 更新到 4.10。
- 将文件加载器添加到 package.json 中的依赖项。
我猜最近添加的一些东西(文件加载器)导致一些东西告诉 VSTS 上的构建代理使用 Node 12.13 而不是 11.5 但不确定在哪里看。我是 VSTS 的新手,我以前使用过 TeamCity,如果我们在构建代理方面遇到任何问题,我们可以远程访问代理并解决问题,但不确定 how/if 这在 VSTS 中是否可行。
任何帮助将不胜感激!
谢谢,詹姆斯
如果您想确定在构建过程中使用的节点版本,请添加 'Node.js tool Installer' 任务。在任务中,您可以定义将使用的节点的确切版本。这将确保您的构建在将来 运行 更可预测,而不管 Microsoft 代理使用的默认版本是否发生更改。
我遇到了类似的问题。我尝试了上面的答案,但仍然有问题。一旦我将 VSTS 中的解决方案更改为使用 VS2017 而不是 "latest" 构建,我的构建又开始工作了。
看起来 Microsoft 最近在其托管代理上升级了工具。
我删除了 package-lock 并推送了更改,并且构建工作正常
我在本地运行的项目运行良好,npm install 命令成功完成。我正在使用 Node 11.5 并且最近安装了文件加载器,没有任何问题。
然而,当我将构建推送到 VSTS 并且它 运行 'npm install' 命令时,我在日志输出中注意到由于某种原因它使用 Node 12.13 而直到此时它一直是 Node 11.5。该命令未成功完成并失败并显示以下内容:
gyp ERR! build error
gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual
Studio17\Enterprise\MSBuild.0\Bin\MSBuild.exe` failed with exit code:
1
gyp ERR! stack at ChildProcess.onExit
(D:\a\s\Navico.Global\Navico.Global.Web\node_modules\node-
gyp\lib\build.js:262:23)
gyp ERR! stack at ChildProcess.emit (events.js:210:5)
gyp ERR! stack at Process.ChildProcess._handle.onexit
(internal/child_process.js:272:12)
gyp ERR! System Windows_NT 10.0.14393
gyp ERR! command "C:\Program Files\nodejs\node.exe"
"D:\a\1\s\Navico.Global\Navico.Global.Web\node_modules\node-
gyp\bin\node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--
libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd D:\a\s\Navico.Global\Navico.Global.Web\node_modules\node-
sass
gyp ERR! node -v v12.13.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed with error code: 1
npm verb lifecycle node-sass@4.10.0~postinstall: unsafe-perm in lifecycle true
到目前为止我尝试过的:
- 提交包-lock.json 因为一开始没有提交。
- 已将 Node-sass 从 4.9 更新到 4.10。
- 将文件加载器添加到 package.json 中的依赖项。
我猜最近添加的一些东西(文件加载器)导致一些东西告诉 VSTS 上的构建代理使用 Node 12.13 而不是 11.5 但不确定在哪里看。我是 VSTS 的新手,我以前使用过 TeamCity,如果我们在构建代理方面遇到任何问题,我们可以远程访问代理并解决问题,但不确定 how/if 这在 VSTS 中是否可行。
任何帮助将不胜感激!
谢谢,詹姆斯
如果您想确定在构建过程中使用的节点版本,请添加 'Node.js tool Installer' 任务。在任务中,您可以定义将使用的节点的确切版本。这将确保您的构建在将来 运行 更可预测,而不管 Microsoft 代理使用的默认版本是否发生更改。
我遇到了类似的问题。我尝试了上面的答案,但仍然有问题。一旦我将 VSTS 中的解决方案更改为使用 VS2017 而不是 "latest" 构建,我的构建又开始工作了。
看起来 Microsoft 最近在其托管代理上升级了工具。
我删除了 package-lock 并推送了更改,并且构建工作正常