将应用程序部署到 heroku 时无法在视图目录中查找视图

Fail to looked up view in views directory when deploy app to heroku

我已将我的 NodeJS 应用程序部署到 Heroku 并收到此错误:Internal Server Error。然后我查看日志并发现 Error: Failed to lookup view "student.ejs" in views directory "/app/views"。 我的目录结构是:

  /node_modules
  /public
  /views
      student.ejs
  app.js
  packet.json

这里是我使用的依赖版本。

 "body-parser": "^1.17.2",
 "ejs": "^2.5.7",
 "express": "^4.15.3",
 "mongoose": "^4.10.2"

设置模板引擎和视图目录

 app.engine('html',require('ejs').renderFile);
 app.set('view engine', 'ejs')
 app.set('views',__dirname+'/views');

渲染

 res.render('student.ejs',{info:data});

该应用程序可以 运行 在本地主机上运行良好。有人可以帮我解决这个问题吗?提前致谢!

我不确定这是否对您有帮助,但我在部署到 Heroku 时遇到了类似的错误。就我而言,问题是我的本地环境是 Windows 上的 运行,但 Heroku 部署到 Linux 个容器。

我通过删除一些硬编码路径并改用 path.join 解决了这个问题。

在你的情况下,你应该更换

app.set('views',__dirname+'/views');

app.set('views', path.join(__dirname, 'views'));

请记住,您必须要求路径模块。

希望对您有所帮助!

我在名为 createSession.hbs 的视图中遇到了类似的问题。

在我的路线中createSession.js我在做

res.render('createsession', {...});

在本地首都 'S' 没关系,但在部署时我遇到了内部服务器错误。

因此解决方法是将 createSession.hbs 更改为 createsession.hbs(小写 's')。

我的本地 OS 是 Windows,我部署在 Heroku(Ubuntu 服务器上)。

愚蠢的错误和烦人的错误,因为它在本地工作,但希望它能帮助别人。