在其他任何内容开始在decrypt
应用程序中运行之前,我想基于环境变量config
进行多个Node.js
项目。
我正在使用标准node ./app.js
启动我的应用。然后,从我的app.js
文件的顶部调用一个简单的方法:
function setConfig() {
var pass = process.env.pass;
var conf = Encrypt.decrypt(encryptedConfig, pass);
var configObj = JSON.parse(conf);
// do stuff with the configObj
}
这很好用,但是由于一切都是async
,其他需要配置变量的进程已经在运行并引发错误。
我想要的是先运行setConfig()
,然后再进行其他操作。这可行吗?
答案 0 :(得分:0)
如果例程是同步的,则可以在依赖该例程的例程之前执行该例程。在主模块顶部的其他任何地方执行它可以确保不会出现争用情况:
setConfig();
require('module-that-depends-on-config');
如果例程是异步的,则应将其视为异步以避免竞争条件。最好让所有异步例程都返回Promise,以便可以将它们与主模块中的async
函数链接起来:
(async () => {
await setConfigAsync();
require('module-that-depends-on-config');
...
})().catch(console.error);
答案 1 :(得分:0)
除了接受的答案外,在某些情况下(您不能/不想修改执行的文件)可能有用的是 NODE_OPTIONS
环境变量 + --require
({{1 }}) -r
node executable
这样,NODE_OPTIONS='--require "./first.js"' node second.js
在 first.js
之前执行。
文档: