create-react-app: PUBLIC_URL is not the same as homepage, but only the pathname

Describe the bug

I have uploaded all the static resources to CDN, include .js and .css files. So I have to set the ‘homepage’ as the host address of CDN server, which make the urls of scripts in ‘index.html’ to be right.

However, the urls injected to ‘index.html’ is the pathname of ‘homepage’ that I set in package.json, after upload react-scripts to 3.4.1.

And there is no such problem when I using version 3.3.0. I found that the actual homepage has been change after this PR feat(react-scripts): allow PUBLIC_URL in develoment mode

So I want to know, is it a bug that will be fixed? Or is there any method that can make the PUBLIC_URL to be a complete url.

Did you try recovering your dependencies?

no, but downgrade to 3.3.0

Which terms did you search for in User Guide?

The docs still use the complete url as example Step 1: Add homepage to package.json

Environment

irrelevant, i guess

Steps to reproduce

(Write your steps here:)

  1. set homepage in package.json like ‘https://example.com/a/b/c
  2. yarn build
  3. the url of script in index.html will be ‘/a/b/c/xxx.js’, which will not find the correct resource

Expected behavior

The PUBLIC_URL should be the same as homepage in package.json

Actual behavior

The PUBLIC_URL is the pathname of homepage

Reproducible demo

no demo

About this issue

  • Original URL
  • State: open
  • Created 4 years ago
  • Reactions: 19
  • Comments: 21

Commits related to this issue

Most upvoted comments

Still happening as of today. The homepage property in package.json appears to be completely ignored by yarn build.

hi. Has there been any progress on this? I would also like a solution 😃

This is an insidious bug. I was able to resolve this for myself using the following steps:

  1. Add a .env file in the same folder as package.json
  2. Populate it with PUBLIC_URL=https://example.com. If you’re trying to set this up with github pages then you will likely need PUBLIC_URL=https://user-name.github.io/repo-name.
  3. Run npm run build. After these steps I was finally able to see my react site render correctly. In my use case I was trying to host a site using github pages and a custom domain name. This bug ensured that my react app continued to look for my site’s contents under the custom domain instead of the github domain listed under homepage in package.json.

Does anyone have a fix for this other than changing version to react-scripts@3.3.0? I changed the version and it created an issue as follows: TypeError [ERR_INVALID_ARG_TYPE]: The “path” argument must be of type string. Received undefined

Found the fix. Changed react-dev-utils to 10.1.0

I fixed a similar error by setting the homepage on package.json to an empty string:

   "homepage": "",

Before I did that I was getting the app initialised locally with unwanted URL, something like:

  Local:            http://localhost:3000/this-and-that/and-some-more
  On Your Network:  http://192.168.1.47:3000/this-and-that/and-some-more