首页 > 解决方案 > 当我有两个不同的文件夹时如何将我的应用程序部署到heroku

问题描述

我有一个带有两个不同文件夹的项目。一个是前端,另一个是后端。我想将这两个文件夹部署在一个 heroku 应用程序上。

在 server.js 我有

app.get('*', (req, res) => {
    return res.sendFile(path.join(__dirname, '../frontend/dist/index.html'))
})

所以我可以从 angular 提供 index.html 文件。但是当我尝试在文件夹的根目录上部署 git bash 时,使用这两个 fodler 时,我得到了未指定语言或其他东西的错误。我用谷歌搜索了错误和人们说那是因为我在文件夹的根目录下没有 package.json 文件。

我怎样才能有两个不同的文件夹和两个不同的 package.json 以便我可以部署到 heroku,或者我不能?解决办法是什么 ?

标签: node.jsangularexpressheroku

解决方案


在您的 Node Appindex.js文件中添加以下代码并将您的客户端代码移动到客户端目录中

  app.use(express.static(path.join(__dirname, "client/build")));
  app.get("*", (req, res)=>{
    res.sendFile(path.join(__dirname, "client/build",'index.html'));
  })

在你的 Package.json

"scripts": {
    "client": "cd client && yarn start",
    "server": "nodemon server.js",
    "build": "cd client && npm run build",
    "dev": "concurrently --kill-others-on-fail \"yarn server\" \"yarn client\"",
    "start": "node server.js",
    "heroku-postbuild": "cd client && npm install && npm install --only=dev --no-shrinkwrap && npm run build"
  }

推荐阅读