reactjs - Express + Typescript + React:错误:ENOENT:没有这样的文件或目录,stat'/app/frontend/build/index.html'?
问题描述
我在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:没有这样的文件或目录,stat '/app/frontend/build/index.html'
我检查了 heroku bash 上的目录并在那里构建,这不是我第一次部署应用程序,但这次是打字稿,我习惯了 javascript,我想这可能是不同的?我 100% 确定该文件夹正确地定位在 config() 上。帮助?
解决方案
TypeScript 不会将未主动编译的文件复制到目标目录,例如资产和模板文件。
我怀疑它index.html
没有被复制到您的代码解析绝对路径的输出目录res.sendFile(...)
。
您可能希望将这些文件移动到 TypeScript 编译过程未触及的单独目录中。或者,实现一个gulp
orgrunt
任务,以递归方式将所有非 JavaScript、非 JSON 和非 TypeScript 文件复制到 TypeScript 输出文件夹,以便正确解析所有相对路径。
该线程可能会对您有所帮助:Angular 2 + Typescript 编译器复制 html 和 css 文件
推荐阅读
- python - 自定义排序并在熊猫中取第一行
- visual-studio - 1440p 设计器周围的 Visual Studio 2019 黑条
- spring-mvc - 声明地图
作为范围变量导致问题 - postgresql - 如何检查不可为空的列?
- node.js - Angular中带有路由器插座的案例
- python - 在 Windows 10 电脑上使用 Visual Studio Code 时 Python 启动器无法连接
- reactjs - React Navigation 5.x 基于 param 的导航过渡动画
- javascript - 提高 JavaScript 函数的速度
- c - 如何正确使用 timerfd?
- c# - 如何访问对象的字符串属性C#