如何使用 post build 在 heroku 上构建多个 React 应用程序
how to build multiple react applications at heroku using post build
我想运行 heroku postbuild for 2 react apps which uses 1 single nodejs server.
这就是我目前构建 1 个运行良好的 React 应用程序的方式
"scripts": {
"server": "nodemon index.js",
"shop-user": "npm start --prefix shop-user",
"start": "node index.js",
"dev": "concurrently \"npm run server\" \"npm run shop-user\"",
"heroku-postbuild": "cd shop-user && npm install && npm install --only=dev --no-shrinkwrap && npm run build"
}
以及我为 2 个应用所做的尝试
"scripts": {
"server": "nodemon index.js",
"shop-user": "npm start --prefix shop-user",
"start": "node index.js",
"dev": "concurrently \"npm run server\" \"npm run shop-user\"",
"heroku-postbuild": "cd shop-user && npm install && npm install --only=dev --no-shrinkwrap && npm run build && cd .. end-user && npm install && npm install --only=dev --no-shrinkwrap && npm run build"
},
这是行不通的。
我的server.js
if (process.env.NODE_ENV === 'production') {
app.use('/shop', express.static(path.join(__dirname, 'shop-user/build')));
app.use(express.static(path.join(__dirname, 'end-user/build')));
app.get('/shop/*', (req, res) => {
res.sendFile(path.join(__dirname, 'shop-user/build', 'index.html'));
});
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'end-user/build', 'index.html'));
});
}
似乎您移动到另一个存储库的命令已损坏,因为您的 cd 命令中缺少 /
。
替换:
cd .. end-user && npm install && npm install --only=dev --no-shrinkwrap && npm run build"
与:
cd ../end-user && npm install && npm install --only=dev --no-shrinkwrap && npm run build"
这将构建您的其他项目。
我想运行 heroku postbuild for 2 react apps which uses 1 single nodejs server.
这就是我目前构建 1 个运行良好的 React 应用程序的方式
"scripts": {
"server": "nodemon index.js",
"shop-user": "npm start --prefix shop-user",
"start": "node index.js",
"dev": "concurrently \"npm run server\" \"npm run shop-user\"",
"heroku-postbuild": "cd shop-user && npm install && npm install --only=dev --no-shrinkwrap && npm run build"
}
以及我为 2 个应用所做的尝试
"scripts": {
"server": "nodemon index.js",
"shop-user": "npm start --prefix shop-user",
"start": "node index.js",
"dev": "concurrently \"npm run server\" \"npm run shop-user\"",
"heroku-postbuild": "cd shop-user && npm install && npm install --only=dev --no-shrinkwrap && npm run build && cd .. end-user && npm install && npm install --only=dev --no-shrinkwrap && npm run build"
},
这是行不通的。
我的server.js
if (process.env.NODE_ENV === 'production') {
app.use('/shop', express.static(path.join(__dirname, 'shop-user/build')));
app.use(express.static(path.join(__dirname, 'end-user/build')));
app.get('/shop/*', (req, res) => {
res.sendFile(path.join(__dirname, 'shop-user/build', 'index.html'));
});
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'end-user/build', 'index.html'));
});
}
似乎您移动到另一个存储库的命令已损坏,因为您的 cd 命令中缺少 /
。
替换:
cd .. end-user && npm install && npm install --only=dev --no-shrinkwrap && npm run build"
与:
cd ../end-user && npm install && npm install --only=dev --no-shrinkwrap && npm run build"
这将构建您的其他项目。