我无法在我的两个Azure Web Apps(基于Windows的运行Kudu)上安装NodeJs性能监视器“ StackImpact”。在Windows 10笔记本电脑上本地都可以正常运行,但是服务器上的NPM安装失败(以下输出)
我尝试升级到Node 10.6(Azure支持的最新版本),然后降级到Node 8.11.1。我再次检查了计算机是否以64位运行。
...
89 verbose stack Error: stackimpact@1.3.10 install: `node node-gyp-fallback.js`
89 verbose stack Exit status 1
89 verbose stack at EventEmitter.<anonymous> (D:\Program Files (x86)\npm\6.1.0\node_modules\npm\node_modules\npm-lifecycle\index.js:304:16)
89 verbose stack at EventEmitter.emit (events.js:182:13)
89 verbose stack at ChildProcess.<anonymous> (D:\Program Files (x86)\npm\6.1.0\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
89 verbose stack at ChildProcess.emit (events.js:182:13)
89 verbose stack at maybeClose (internal/child_process.js:961:16)
89 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:5)
90 verbose pkgid stackimpact@1.3.10
91 verbose cwd D:\home\site\wwwroot
92 verbose Windows_NT 10.0.14393
93 verbose argv "D:\\Program Files (x86)\\nodejs\\10.6.0\\node.exe" "D:\\Program Files (x86)\\npm\\6.1.0\\node_modules\\npm\\bin\\npm-cli.js" "install" "stackimpact"
94 verbose node v10.6.0
95 verbose npm v6.1.0
96 error code ELIFECYCLE
97 error errno 1
98 error stackimpact@1.3.10 install: `node node-gyp-fallback.js`
98 error Exit status 1
99 error Failed at the stackimpact@1.3.10 install script.
99 error This is probably not a problem with npm. There is likely additional logging output above.
100 verbose exit [ 1, true ]
任何帮助将不胜感激!
答案 0 :(得分:1)
武器。我会重现您的问题。
根据我的观察,它与节点版本或npm版本无关。它说找不到node-gyp。
因此,我遵循此case来运行命令npm install -global node-gyp
。您可以在D:\local\AppData\npm>
下进行检查。
我们知道,node-gyp需要依赖python2.7
和Microsoft's vc++ build tools
进行编译,这在Linux系统上很好,因为默认情况下已安装Linux,但Windows操作系统未安装python2默认情况下,.7和vc ++构建工具。
我试图安装npm install --global --production windows-build-tools
,但失败了。它需要admin
权限,这是我们在网络应用沙箱限制中无法触及的。
因此,作为解决方法,也许您必须在本地安装软件包,然后将全部node_modules
文件夹上载到azure,而不是在kudu中安装软件包。
添加:
Azure支持人员指出,即使您将环境设置为x64,该程序包也只能在64位环境中运行,而其Web Apps默认运行x86 Node。
您可以通过手动将x64节点复制到服务器,更新iisnode.yml
指向服务器,然后手动更新node_modules
来覆盖。所有这些都完全摧毁了建立干净CI路径的任何机会。