如何防止pm2改变当前目录?
How to prevent PM2 to change the current directory?
我正在使用 pm2 to handle my nodejs micro services and express-handlebars 来处理视图:
var hbs = exphbs.create({
defaultLayout: 'main',
helpers: {
ifeq: function(a, b, options) {
if (a === b) {
return options.fn(this);
}
return options.inverse(this);
},
toJSON : function(object) {
return JSON.stringify(object);
}
}
});
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');
直接启动应用程序(节点 app.js)效果很好。但是,如果我使用 PM2 (pm2 start app.js) 午餐,我会得到:
Error: Failed to lookup view "home" in views directory "/root/views"
当使用 pm2 午餐时,当前工作目录更改为 /root/,并且由于我的应用程序不在那里,所以我在试图打开视图目录(位于应用程序目录中)的 handlebars 中收到错误消息。
有没有办法通过告诉 pm2 当前工作目录或告诉 express-handlebars 库完整目录而不是使用相对目录来解决这个问题?
我正在使用 Koa 和 SWIG 作为模板 - 但我需要在应用程序设置中包含视图的路径:
app.use(koaRender('./server/server-side-views', {
map: { html: 'swig' },
cache: false
}));
我怀疑你的情况更是如此。我认为表达你的代码应该是这样的:
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');
app.set('views', __dirname + '/yourViewDirectory');
我正在使用 pm2 to handle my nodejs micro services and express-handlebars 来处理视图:
var hbs = exphbs.create({
defaultLayout: 'main',
helpers: {
ifeq: function(a, b, options) {
if (a === b) {
return options.fn(this);
}
return options.inverse(this);
},
toJSON : function(object) {
return JSON.stringify(object);
}
}
});
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');
直接启动应用程序(节点 app.js)效果很好。但是,如果我使用 PM2 (pm2 start app.js) 午餐,我会得到:
Error: Failed to lookup view "home" in views directory "/root/views"
当使用 pm2 午餐时,当前工作目录更改为 /root/,并且由于我的应用程序不在那里,所以我在试图打开视图目录(位于应用程序目录中)的 handlebars 中收到错误消息。
有没有办法通过告诉 pm2 当前工作目录或告诉 express-handlebars 库完整目录而不是使用相对目录来解决这个问题?
我正在使用 Koa 和 SWIG 作为模板 - 但我需要在应用程序设置中包含视图的路径:
app.use(koaRender('./server/server-side-views', {
map: { html: 'swig' },
cache: false
}));
我怀疑你的情况更是如此。我认为表达你的代码应该是这样的:
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');
app.set('views', __dirname + '/yourViewDirectory');