我在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()正确定位。帮助吗?
答案 0 :(得分:0)
TypeScript不会将它不能主动编译的文件复制到目标目录,例如资产和模板文件。
我怀疑index.html
未被复制到您的代码解析res.sendFile(...)
的绝对路径的输出目录中。
您可能希望将这些文件移动到TypeScript编译过程未涉及的单独目录中。或者,实现一个gulp
或grunt
任务,该任务将所有非JavaScript,非JSON和非TypeScript文件递归复制到TypeScript输出文件夹中,以便所有相对路径都能正确解析。
此主题可能会帮助您:Angular 2 + Typescript compiler copy html and css files