繁体   English   中英

错误:ENOENT,Heroku 中的 stat '/app/public/views/index.html'

[英]Error: ENOENT, stat '/app/public/views/index.html' in Heroku

我在 Heroku 应用程序上提供静态视图时出错。 奇怪的是,Heroku 似乎在我的静态文件路径前面附加了“app”,我不知道为什么。 路径应该是“public/views/index.html”。

我最近尝试了 Stack 提出的这个解决方案,但它似乎不起作用: Node.js,无法打开文件。 错误:ENOENT,统计 './path/to/file'

来自我的服务器的获取请求:

app.use(express.static(__dirname + '/public'));

app.get('/', function (req, res) {
  res.sendFile(__dirname + '/public/views/index.html');
});

// profile page
app.get('/profile', function (req, res) {
  // check for current (logged-in) user
  req.currentUser(function (err, user) {
    // show profile if logged-in user
    if (user) {
      res.sendFile(__dirname + '/public/views/profile.html');
    // redirect if no user logged in
    } else {
      res.redirect('/');
    }
  });
});

有谁知道为什么 Heroku 会将“app”附加到我的路径中?

所有路径在本地服务器上都能正常工作。 谢谢!

接受的。 这里使用PWD而不是__dirname解决方案是非常错误的。 sendFile 在 Heroku 上的工作方式与在其他任何地方的工作方式相同:

res.sendFile(path.join(__dirname, 'public', 'views', 'index.html'));

这是因为 Heroku 中的全局__dirname变量设置为/app 使用process.env.PWD而不是__dirname

看起来这已经有一段时间没有更新了,但是我遇到了相同的 Heroku 根目录混淆,但是当我将代码更改为使用“路径”而不是 __dirname 时,它​​起作用了。

path.join(__dirname, '..', 'views', 'email', `${template}.pug`),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM