在heroku上部署的项目对路线无效

时间:2019-08-27 10:56:29

标签: node.js reactjs heroku

我在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上工作

2 个答案:

答案 0 :(得分:0)

请尝试以生产模式运行应用,或将NODE_ENV设置为生产。

我认为此NPM_CONFIG_PRODUCTION=false将在开发模式下运行您的应用,因此您必须将其设置为trueNPM_CONFIG_PRODUCTION=true)。

也请在if语句之前打印process.env.NODE_ENV,以检查您的环境模式。

答案 1 :(得分:0)

package.json中的脚本列表之后,我添加了具有nodenpm版本的引擎,并且该引擎开始正常工作

  "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"
  },