我正在使用node-windows来设置我的应用程序以作为Windows服务运行。我正在使用node-config来管理配置设置。当然,当我使用node app.js
命令手动运行我的应用程序时,一切正常。当我将其作为服务安装并启动时,配置设置为空。我在production.json
文件夹中有./config
个文件,我可以在安装脚本中将NODE_ENV
设置为production。我可以确认变量设置正确但仍然没有。即使我在服务的log.info('CONFIG_DIR: ' + config.util.getEnv('CONFIG_DIR'));
值中明确设置undefined
,env
也会生成var Service = require('node-windows').Service;
var path = require('path');
// Create a new service object
var svc = new Service({
name:'Excel Data Import',
description: 'Excel Data Import Service.',
script: path.join(__dirname, "app.js"), // path application file
env:[
{name:"NODE_ENV", value:"production"},
{name:"CONFIG_DIR", value: "./config"},
{name:"$NODE_CONFIG_DIR", value: "./config"}
]
});
// Listen for the "install" event, which indicates the
// process is available as a service.
svc.on('install',function(){
svc.start();
});
svc.install();
。寻找任何见解。
安装脚本:
var config = require('config');
var path = require('path');
var EventLogger = require('node-windows').EventLogger;
var log = new EventLogger('Excel Data Import');
init();
function init() {
log.info("init");
if(config.has("File.fileFolder")){
var pathConfig = config.get("File.fileFolder");
log.info(pathConfig);
var DirectoryWatcher = require('directory-watcher');
DirectoryWatcher.create(pathConfig, function (err, watcher) {
//...
});
}else{
log.info("config doesn't have File.fileFolder");
}
}
app脚本:
{{1}}
答案 0 :(得分:1)
我知道这个反应很晚,但我也有同样的问题,这就是我如何解决它:
var svc = new Service({
name:'ProcessName',
description: 'Process Description',
script: require('path').join(__dirname,'bin\\www'),
env:[
{name: "NODE_ENV", value: "development"},
{name: "PORT", value: PORT},
{name: "NODE_CONFIG_DIR", value: "c:\\route-to-your-proyect\\config"}
]
});
当您使用Windows时,不需要为您的环境变量添加前缀$。
此外,如果您的运行脚本与配置目录不在同一目录上,则必须提供配置目录的完整路径。
当你有节点窗口错误时,也有助于深入了解错误日志。它位于rundirectory / daemon / processname.err.log
上我希望这会对某人有所帮助。