我在部署到heroku时收到了这个消息:
remote: =====! create-react-app-buildpack has reached end-of-life 🌅
remote: This build may succeed, but the buildpack is no longer maintained.
remote: On the Heroku-22 stack and beyond, this may fail to build at all.
remote:
remote: Please consider migrating to https://nextjs.org or https://remix.run to develop React apps which are deployable using Heroku's Node.js buildpack https://github.com/heroku/heroku-buildpack-nodejs, or you may develop your own create-react-app deployment with Node.js and Nginx buildpacks.
我正在使用这个buildpack:
https://github.com/mars/create-react-app-buildpack
但是heroku将不再支持它。我不知道如何将我的reactapp迁移到nextjs或remix,有人知道支持新版本heroku的替代构建包吗?
旧答案
您正在使用的构建包已弃用,并且不能在Heroku-22上工作。简单的解决方案,也是我所做的,就是推迟升级Heroku堆栈,直到为Create-React-App发布新的构建包。Heroku-18已经被弃用了,所以你应该升级到Heroku-20。
heroku stack:set heroku-20
更新答案(截至2023-01-05)
如果你有一个没有环境变量的静态网站,你可以使用一个快速服务器来运行静态预构建资产。基于本文的说明。
- 通过Heroku中应用程序的设置选项卡从Heroku中删除当前构建包。
- Install express with
npm install express
(oryarn add express
) - 新建文件
scripts/heroku-start.js
,内容如下:
const express = require('express');
const path = require('path');
const app = express();
const port = process.env.PORT || 3000;
app.use(express.json());
// Your static pre-build assets folder
app.use(express.static(path.join(__dirname, '..', 'build')));
// Root Redirects to the pre-build assets
app.get('/', function(req,res){
res.sendFile(path.join(__dirname, '..', 'build'));
});
// Any Page Redirects to the pre-build assets folder index.html that // will load the react app
app.get('*', function(req,res){
res.sendFile(path.join(__dirname, '..', 'build/index.html'));
});
app.listen(port, ()=>{
console.log("Server is running on port: ", port)
})
- 创建
Procfile
文件,内容如下:
web: node scripts/heroku-start.js
- 设置Heroku stack为Heroku-22并部署
我似乎找到了一个简单的工作,目前正在我的网站上工作。我得到同样的错误:
远程:= = = = =比;检测框架:静态HTML不支持Stack heroku-22 !远程:!Push被拒绝,编译React.js (create-react-app) multiapp失败
虽然我已经在Heroku上运行了相同的页面,但有不同的文本/图像(这在某种程度上运行了我的react页面,目前没有任何buildpack)
为了解决这个问题,这就是我所尝试的,它允许我git推送我的应用程序。
当你从npm推送你的react应用时,确保从该应用的Heroku设置页面中删除react构建包,通过npm重新推送,它应该加载没有任何问题,你的应用现在上传到Heroku。现在,如果你去重新应用你的构建包(https://buildpack-registry.s3.amazonaws.com/buildpacks/mars/create-react-app.tgz)并刷新你的页面,它应该工作得很好。
仅供参考,同一提交者的新构建包现在正在更新并工作。
https://github.com/heroku/heroku-buildpack-nodejs -请检查并将其插入heroku:0
谢谢你的互联网书呆子-爱你们所有人
0