gpt4 book ai didi

node.js - Azure NodeJS 版本

转载 作者:搜寻专家 更新时间:2023-11-01 00:35:21 25 4
gpt4 key购买 nike

好吧我放弃了。为什么 Azure 有一些默认的 Node 版本(0.10.x),然后依赖于使用硬编码路径来获取所需的特定版本?这不是我的问题(这是修辞性的)。

这种安排的问题在于,似乎是对 Node 进行了“内部”(对应用程序)调用,当然使用了 $PATH 中的调用。

我们有一个 Nodejs、Express、Angular 应用程序。

我的第一个问题(虽然不是这篇文章的原因)是我嵌套了 package.json文件位于 /, angular/ and server/目录。根目录调用子目录上的安装。这在 Azure 中不起作用。

我必须将调用转移到 gulpng前往 azure deploy.sh通过对已安装的 Node 模块进行硬编码引用。 deploy.sh包含:

#!/bin/bash

...
NODE_EXE=`cat "$DEPLOYMENT_TEMP/__nodeVersion.tmp"`
NPM_CMD="\"$NODE_EXE\" \"$NPM_JS_PATH\""
GRUNT_CMD="\"$NODE_EXE\" ./node_modules/gulp/bin/gulp.js"
NG_CMD="\"$NODE_EXE\" ./node_modules/@angular/cli/bin/ng"

...

cd server
eval $NPM_CMD install --production
eval $GRUNT_CMD build

cd ../angular
eval $NPM_CMD install --production
eval $NG_CMD build --prod

cd ..

作为 NG 生产构建的一部分,有一个最小化步骤。它似乎有一个“内部 Node 调用”并且失败了:

remote: Selected node.js version 10.14.1. Use package.json file to choose a different version.
remote: Selected npm version 6.4.1
...
...
...
remote: Date: 2019-01-04T04:20:42.367Z
remote: ERROR in ./src/styles.scss
remote: Hash: 8062ccafe553f9f5894b
remote: Time: 33752ms
remote: chunk {0} runtime.ec2944dd8b20ec099bf3.js (runtime) 1.41 kB [entry] [rendered]
remote: chunk {1} main.9868d9b237c3a48c54da.js (main) 128 bytes [initial] [rendered]
remote: chunk {2} polyfills.85f47f0bf59079cbc23a.js (polyfills) 130 bytes [initial] [rendered]
remote: chunk {3} (styles) [initial] [rendered]
remote: An error has occurred during web site deployment.
remote: Module build failed (from D:/home/site/wwwroot/angular/node_modules/mini-css-extract-plugin/dist/loader.js):
remote: ng build in angular failed
remote: ModuleBuildError: Module build failed (from D:/home/site/wwwroot/angular/node_modules/sass-loader/lib/loader.js):
remote: Error: Missing binding D:\home\site\wwwroot\angular\node_modules\node-sass\vendor\win32-ia32-64\binding.node
remote: Node Sass could not find a binding for your current environment: Windows 32-bit with Node.js 10.x
remote:
remote: Found bindings for the following environments:
remote: - Windows 32-bit with Node 0.10.x

./src/styles.scss包含:

@import '~@dhsui/kit/styles/dhs-kit-all';
@import "~bootstrap/dist/css/bootstrap.css";

我尝试进行更改以将所需版本的 Node 目录添加到 PATH 中(并更改为仅调用 node 而不是 Azure 似乎要求您执行的完整路径):

NODE_DIR=$(dirname "$(echo $NODE_EXE | tr '\\' '/')" | tr '/' '\\')
export PATH=$NODE_DIR:$PATH

但是在同一个地方失败了。所以看来我的问题不是 that "internal" (to the app) calls are made to node and of course the one in $PATH is used. ! (这个更改实际上不起作用,所以我恢复了)。

有谁知道为什么要为Node 0.10.x设置绑定(bind)吗?可以采取什么措施来防止这个问题?

最佳答案

有一个维基页面Node versioning Project Kudu for Azure WebApps 可以回答您有关 Node 版本的问题。在2017年10月31日编辑wiki页面之前,默认的node版本是v0.6.20,现在是0.10.40。看来取决于Azure WebApps的部署模板。

创建 Web 应用程序后,您可以配置 Azure Website environment variable 的值WEBSITE_NODE_DEFAULT_VERSION 在Azure门户的Application settings选项卡中更改默认的Node版本,如下图,如Change the Node version小节维基页面的可配置设置表示。

enter image description here

关于Azure WebApps中所有可用的Node版本,您可以在Kudu控制台的D:\Program Files (x86)\nodejs路径下命令ls列出它们如下图。

enter image description here

设置WEBSITE_NODE_DEFAULT_VERSION后,您的网站将自动重启,并且Node版本已升级。

enter image description here

然后,您可以使脚本直接在当前 Node 版本上运行,而无需考虑这些环境变量,例如 PATH 或其他有关 Node 的变量。

关于node.js - Azure NodeJS 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54034084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com