node.js - 当我有两个不同的文件夹时如何将我的应用程序部署到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 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"
}
推荐阅读
- identityserver4 - IdentityServer4:自定义 ISigningCredentialStore 以生成基于 Token 结果的动态签名密钥
- c# - NuGet Pack - 未声明“targetFramework”属性
- android - 使用 startActivity 调用 Activity 时不启动
- android - 从 Firebase 实时数据库中检索数据
- url - 以角度修改网址
- javascript - 如何在 MVC 中的自定义按钮上使用 Facebook 分享按钮功能
- javascript - 在 Vue.js 中单击 DOM 元素时执行函数
- mysql - MySQL帮助查询
- sql-server - 如何更正将带有“NOT MATCHED BY TARGET”的 MERGE 语句从 MS SQL 迁移到 PostgreSQL?
- php - 用php在新行中按块排列成块和结果