我有一个我已经建立的create-react-app项目(如果有关系,可以在后台将节点和表达式连接到mysql db),并且工作正常。我的项目经理告诉我,我需要将“ public”目录的名称更改为“ static”(此目录保存/将保存我的静态文件,例如index.html和我需要提供的任何媒体)为了正确部署它,但是我唯一能找到的解决方案是弹出,因此我可以更改'PUBLIC_URL'的值。当前,当我运行“ npm run start”时出现错误,它记录:“找不到所需文件。名称:index.html”,并且仍在公共目录(我已经将其更改为“静态”)中进行搜索。我的代码中没有地方引用公用文件夹。
从我的理解(如果我错了,请纠正我),PUBLIC_URL变量由create-react-app设置为公用文件夹的路径。我想将其更改为静态文件夹,但是我发现的唯一解决方案似乎涉及到弹出然后手动更改变量。有没有一种方法可以在不弹出的情况下设置该变量,或者进行其他更改该目录的解决方法,如果没有,那么最简单的方法是使其正常工作(我宁愿不弹出,但如果不弹出,则可以这样做)。唯一的方法)...我真的只需要使用目录来更改名称,并且发现自己对自己认为相当简单的更改感到沮丧。
谢谢!
编辑:这是我的package.json:
{
"name": "client",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.5.2",
"react-dom": "^16.5.2",
"react-scripts": "1.1.5"
},
"scripts": {
"start": "PORT=8080 && react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}
答案 0 :(得分:1)
在package.json中,将您的 build 行替换为:
"build": "react-scripts build && rm -rf static && mv build static"
答案 1 :(得分:1)
PUBLIC_URL
是您可以设置的变量。
您可以在控制台中进行设置
export PUBLIC_URL="/static"
创建React应用会从process.env.PUBLIC_URL
提取
您可以在pull request thread中了解有关此功能的更多信息
答案 2 :(得分:0)
我真的很惊讶它实际上是多么简单。
使用您选择的包管理器安装 react-app-rewired
。
在项目的根目录下创建一个 config-overrides.js
文件
将以下代码粘贴到 config-overrides.js
const path = require('path');
module.exports = {
paths: function (paths, env) {
// Changing public to static
paths.appPublic = path.resolve(__dirname, 'static');
paths.appHtml = path.resolve(__dirname, 'static/index.html');
return paths;
}
}
.env
文件并写入 PUBLIC_URL='./static'
希望这能帮助任何试图做同样事情的人。