在我的项目的根目录下,我有一个frontendandbackend文件夹。这两个文件夹都包含一个package.json列出它们的依赖关系的文件夹。npm install部署应用程序时如何告诉 Heroku 在两个文件夹上运行?Heroku 似乎希望package.json默认只有一个文件。我必须对 Procfile 做些什么吗?Heroku 文档似乎并没有说明我的具体问题。
谢谢您的帮助!
在我的项目的根目录下,我有一个frontendandbackend文件夹。这两个文件夹都包含一个package.json列出它们的依赖关系的文件夹。npm install部署应用程序时如何告诉 Heroku 在两个文件夹上运行?Heroku 似乎希望package.json默认只有一个文件。我必须对 Procfile 做些什么吗?Heroku 文档似乎并没有说明我的具体问题。
谢谢您的帮助!
我刚刚使用在 heroku postbuild步骤中创建的静态文件成功地完成了这个目标,如本文所述。我有一个 React 前端(虽然可以是任何东西)和 Express API 后端。每个进程在 dev 中都有自己的端口,但在 Heroku 上部署只使用一个端口。
/frontend)。/api——博客假设后端保留在根目录中——任何一种方式都可以)。/frontend/package.json通过将此行添加到(将 5000 替换为您的后端端口)从前端到后端的代理 API 请求:
“代理”:“ http://localhost:5000 ”,
将以下内容添加到后端的api/app.js(or api/index.js) 中(确保最后一部分是在您定义适当的后端 [或 api] 路径之后):
const path = require('path')
// Serve static files from the React frontend app
app.use(express.static(path.join(__dirname, '../frontend/build')))
// AFTER defining routes: Anything that doesn't match what's above, send back index.html; (the beginning slash ('/') in the string is important!)
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname + '/../frontend/build/index.html'))
})
/package.json文件(请注意,使用并发包可以轻松地使用 本地运行整个应用程序npm run dev,但仅heroku-postbuild在此处需要): "scripts": {
"frontend": "cd frontend && npm start",
"api": "cd api && nodemon app.js",
"dev": "concurrently --kill-others-on-fail \"npm run api\" \"npm run frontend\"",
"heroku-postbuild": "cd frontend && npm install && npm run build"
},
/Procfile有类似的东西web: node api/app.js似乎您可以将package.json文件放在项目的根目录并使用脚本npm i在两个文件夹中调用。
https://devcenter.heroku.com/articles/nodejs-support#customizing-the-build-process
就像是cd front && npm i && cd ../back && npm i
但我应该说,如果它们在不同的端口上运行,它可能无法工作,因为每个 procfile 似乎只有一个 Web 进程可用。最后一点是要确认的。
您可以在Procfile中为您的项目定义几个入口点:
web: cd front && npm i && npm start
server: cd backend && npm i && npm start
但是,您至少必须升级到 Hobby。这是 7 美元/dyno/月。