无法使用自定义PUBLIC_URL生成创建-反应-应用项目

2022-08-30 05:14:26

我在努力

PUBLIC_URL=http://example.com npm run build

使用最新的 create-react-script 构建的项目。

但是,出现的 in 将替换为空字符串,而不是预期值 。%PUBLIC_URL%public/index.htmlPUBLIC_URL

public/index.html包含类似

<script src="%PUBLIC_URL%/static/js/jarvis.widget.min.js"></script>

数小时的互联网搜索和堆栈溢出表明,关于.我从GitHub克隆了create-react-app,并且一直在浏览代码,但尚未开悟。PUBLIC_URL

有没有人对我做错了什么有任何建议?


答案 1

如果其他答案对您不起作用,则 中还有一个字段。运行后,您应该会收到如下消息:homepagepackage.jsonnpm run build

The project was built assuming it is hosted at the server root.
To override this, specify the homepage in your package.json.
For example, add this to build it for GitHub Pages:

  "homepage" : "http://myname.github.io/myapp",

您只需将其添加为 中的根字段之一,例如package.json

{
  // ...
  "scripts": {
    // ...
  },
  "homepage": "https://example.com"
}

成功设置后,无论是 via 还是 ,您都应该收到如下消息:homepagePUBLIC_URL

The project was built assuming it is hosted at https://example.com.
You can control this with the homepage field in your package.json.

答案 2

像我这样的人正在寻找这样的东西:

<script type="text/javascript" src="https://dsomething.cloudfront.net/static/js/main.ec7f8972.js">

然后设置为 in 将不起作用。https://dsomething.cloudfront.nethomepagepackage.json

1. 快速解决方案

像这样构建项目:
(窗口)

set PUBLIC_URL=https://dsomething.cloudfront.net&&npm run build

(linux/mac)

PUBLIC_URL=https://dsomething.cloudfront.net npm run build

你会得到

<script type="text/javascript" src="https://dsomething.cloudfront.net/static/js/main.ec7f8972.js">

在构建的索引中.html

2. 永久和推荐的解决方案

创建一个在项目根目录(package.json 所在的同一位置)调用的文件。
在此文件中写下(url周围没有引号):.env

PUBLIC_URL=https://dsomething.cloudfront.net

像往常一样构建项目 ()
这也将生成索引.html:npm run build

<script type="text/javascript" src="https://dsomething.cloudfront.net/static/js/main.ec7f8972.js">

3. 奇怪的解决方案(在最新的反应脚本版本中不起作用)

将此添加到您的 package.json
“主页”中:“http://://dsomething.cloudfront.net”,

然后索引.html将生成:

<script type="text/javascript" src="//dsomething.cloudfront.net/static/js/main.ec7f8972.js">

这基本上与:

<script type="text/javascript" src="https://dsomething.cloudfront.net/static/js/main.ec7f8972.js">

在我的理解中。

Github Issue Github Comment