Heroku:无法加载资源:服务器以状态404(未找到)响应

时间:2018-08-16 18:15:48

标签: node.js angular typescript express heroku

我的本​​地计算机上有angular 6应用,完成项目后,将其部署到heroku,一切正常运行,当我运行我的应用时,这里是heroku中该应用的链接:Testing App

如您所见,在控制台浏览器中出现以下错误

  

无法加载资源:服务器的响应状态为404(未找到)

  1. 这是我在github中的应用结构

App repo in github

  1. 供快速参考,这是server.js

    const express = require('express');
    const bodyParser = require('body-parser');
    const cors = require('cors');
    const path = require('path');
    const app = express();
    const port = process.env.PORT || 3000
    
    app.use(express.static(path.join(__dirname, '/majeni/dist/majeni/')));
    
    app.use(bodyParser.json());
    
    app.use(cors());
    
    
    
     const forceSSL = function () {
      return function (req, res, next) {
        if (req.headers['x-forwarded-proto'] !== 'https') {
          return res.redirect(
            ['https://', req.get('Host'), req.url].join('')
          );
        }
        next();
      }}app.use(forceSSL());
    
    app.get('/*', function (req, res) {
       res.sendFile(path.join(__dirname + '/majeni/dist/majeni/index.html'));
         });
    
     app.listen(port, () => {
      console.log('Server started on port '+port);
      });
    
  2. 这是heroku日志。

  

2018-08-16T17:46:38.891333 + 00:00 app [web.1]:错误:ENOENT:没有这样的文件或目录,统计信息'/app/majeni/dist/majeni/index.html'

我的代码有什么问题?

1 个答案:

答案 0 :(得分:1)

Heroku无法找到dist目录,因为它不是已提交的存储库的一部分。 dist目录已添加到.gitignore文件中。

提交dist目录通常是一个坏主意,因此我们应该在Heroku上生成它。

您可以通过在package.json

中添加安装后脚本来完成此操作
"scripts": {
  "postinstall": "ng build"
}

可以找到更多信息in the Heroku docs