我在Heroku上部署了项目。
它在开发人员上运行良好,但在生产中却存在路由问题。它总是尝试在客户端使用服务器api路由。此代码有什么问题?
app.use("/api/games", games);
app.use('/public', express.static(path.join(__dirname, '/public')));
if (process.env.NODE_ENV === "production") {
app.use(express.static("client/build"));
app.get("*", (req, res) => {
res.sendFile(path.resolve(__dirname, "client", "build", "index.html"));
});
}
我也在package.json中编写了Heroku-postbuild脚本
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
客户端在React上工作
答案 0 :(得分:0)
请尝试以生产模式运行应用,或将NODE_ENV设置为生产。
我认为此NPM_CONFIG_PRODUCTION=false
将在开发模式下运行您的应用,因此您必须将其设置为true
(NPM_CONFIG_PRODUCTION=true
)。
也请在if语句之前打印process.env.NODE_ENV
,以检查您的环境模式。
答案 1 :(得分:0)
在package.json
中的脚本列表之后,我添加了具有node
和npm
版本的引擎,并且该引擎开始正常工作
"scripts": {
...
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
},
"engines": {
"node": "10.15.3",
"npm": "6.4.1"
},