Express + Typescript + React:错误:ENOENT:没有这样的文件或目录,stat'/app/frontend/build/index.html'吗?

时间:2019-04-01 09:23:20

标签: reactjs typescript express

我在ts中有这个快递服务器,这是转换后的js,代码:

class App {
    constructor() {
        this.app = express();
        ...
        this.config();
        ...
    }
    config() {
        if (process.env.NODE_ENV === 'production') {
            // Serve any static files
            this.app.use(express.static(path.join(__dirname, '../../frontend/build')));
            // Handle React routing, return all requests to React app
            this.app.get('*', (req, res) => {
                res.sendFile(path.join(__dirname, '../../frontend/build', 'index.html'));
            });
        }
    }
}
exports.default = new App().app;

但是我在heroku上遇到此错误:

  

错误:ENOENT:没有这样的文件或目录,统计   '/app/frontend/build/index.html'

我已经检查了heroku bash上的目录并建立了目录,这不是我第一次部署应用程序,但这一次是打字稿,我习惯了javascript,我想也许这是不同的吗?我100%确信该文件夹已针对config()正确定位。帮助吗?

1 个答案:

答案 0 :(得分:0)

TypeScript不会将它不能主动编译的文件复制到目标目录,例如资产和模板文件。

我怀疑index.html未被复制到您的代码解析res.sendFile(...)的绝对路径的输出目录中。

您可能希望将这些文件移动到TypeScript编译过程未涉及的单独目录中。或者,实现一个gulpgrunt任务,该任务将所有非JavaScript,非JSON和非TypeScript文件递归复制到TypeScript输出文件夹中,以便所有相对路径都能正确解析。

此主题可能会帮助您:Angular 2 + Typescript compiler copy html and css files