NodeJS 如何在节点属性中使用部署和本地使用

af7jpaap  于 2023-05-28  发布在  Node.js
关注(0)|答案(2)|浏览(150)

我已经创建了可以在本地和云中运行的node应用程序现在我希望它以某种方式更流畅和更干净地完成,所以我尝试在config.json文件中放置一些属性来检查我是否要部署应用程序或在本地使用它,但我需要在更改提议之前手动更新此属性,有更好的方法可以用node来完成吗?

let runnerServer = `http://localhost:8060/service/runner/${server.address().port}`;
if (cfg.isHosted) {
    blogServer = `http://${serverName}/service/runner/${server.address().port}`;
}

在conig.json中,我有字段isHosted,如果我想部署或不部署,我会手动更改(true/false)...

更新

也许我可以使用process.env.PORT,但这只是我需要在我的代码中使用的一个例子,目前我有几个分支需要知道我是否在部署或本地运行。

wsewodh2

wsewodh21#

一种选择是在名为process.envhttps://nodejs.org/api/process.html)的构建对象中使用useNode,并使用两个配置文件本身。这种方法有点类似于你正在做的,但可能是 * 清洁 *

  1. config.localhost.json
  2. config.production.json
    然后根据环境设置该对象的属性,如process.env.NODE_ENV = 'localhost'process.env.NODE_ENV = 'production',可以读取相应的文件导入配置。
var config =  require('./config.production.json');
if(process.env.NODE_ENV === 'localhost')
{ 
    config = require('./config.localhost.json');
}

因此,要在本地运行时设置这个环境变量,如果
OSX -然后在终端export NODE_ENV=localhost
WINDOWS -然后在cmd行set NODE_ENV=localhost

mcvgt66p

mcvgt66p2#

解决这个问题的一个简单方法是,如果每个环境配置都可以在repo中:

config.json

production: {
  // prod config
},
staging: {
  // staging config
},
devel: {
  // devel config
}

config.js

const environment = process.env['NODE_ENV'] || 'devel';
module.exports = require('./config.json')[environment];

然后在package.json中添加以下脚本:

package.json

// npm stuff
scripts {
  prod: "ENV=production node index.js",
  stage: "ENV=staging node index.js",
  dev: "ENV=devel node index.js"
}

使用此设置,您可以使用以下命令运行每个配置:

*生产npm run prod
*stagingnpm run stage
*develnpm run dev

相关问题