gpt4 book ai didi

node.js - Azure NODE_PATH环境变量没有任何作用

转载 作者:行者123 更新时间:2023-12-03 03:12:59 24 4
gpt4 key购买 nike

我有一个 NodeJS 项目部署到 Azure,其中包含一些项目范围的模块(例如配置)。

├── bin
│   └── start
├── config
│   └── index.js
└── web.config

在本地,我使用 npm start 启动我的应用程序,它在 Windows 上运行正常。

"scripts": {
"start": "SET NODE_PATH=.& node bin/start"
}

在 Azure 上,我还没有找到从 package.json 运行脚本的方法,因此我更改了 web.config 来运行 node bin/start.

NODE_PATH 环境变量通过“应用程序设置”->“应用程序设置”设置并正确回显。但是,它没有任何效果。

bin/start 文件输出环境变量和错误消息Start "生产"- "."- “找不到模块'配置'”:

var http = require('http');
var util = require('util');
var nconf = require('nconf');

nconf.argv()
.env();

var configMsg = 'default msg';
try {
var config = require('config');
if(config) {
configMsg = 'WOOT!';
}
} catch (e) {
configMsg = e.message;
}

http.createServer(function(req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });

res.end(
util.format(
'Start "%s" - "%s" - "%s"',
nconf.get('NODE_ENV'),
nconf.get('NODE_PATH'),
configMsg
)
);
}).listen(process.env.PORT);

如何让 Azure 理解 NODE_PATH ?

或者,我如何告诉 Azure 使用 npm 脚本(如 npm start)运行我的应用程序?

最佳答案

由于 package.json 中的 scripts 用于 npm cli,例如项目中的 npm start运行应用程序。但是,Azure Web Apps 上的 Node.js 应用程序由 iisnode 托管,它将绕过 packages.json 文件。

您可以考虑以下解决方法:

  • 将您的自定义模块(此处为 config 文件夹)移动到根目录中的 node_modules 文件夹中。当您使用require('config')时,进程将在node_modules文件夹中搜索模块'config'

  • 保留应用程序的架构,修改需要涉及自定义模块的脚本代码,例如 var config = require('../config'); 以涉及模块的相对路径

关于node.js - Azure NODE_PATH环境变量没有任何作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34699798/

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