如何防止PM2更改当前目录?

时间:2016-07-11 11:59:51

标签: node.js pm2

我使用pm2处理我的nodejs微服务,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)午餐,我会得到:

  

错误:无法在视图目录“/ root / views”

中查找视图“home”

当午餐pm2时,当前工作目录更改为/ root /并且由于我的应用程序不在那里,我从车把试图打开视图目录(位于app目录中)收到错误。

有没有办法通过告诉pm2当前工作目录或通过告诉express-handlebars库完整目录而不是使用相对目录来解决这个问题?

1 个答案:

答案 0 :(得分:0)

我正在使用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');