这个问题实际上直接来自我的answer上一个问题。
我在package.json
中添加了一个"homepage"
,因为它是我在Github Pages上托管的React应用,npm run build
的输出显示/build
目录现在可以部署了,并且它假设项目托管在/project_name/
上。
但是在localhost上,这个项目 * 没有 * 托管在/project_name/
上,所以js和css请求的路径被弄乱了(寻找/project_name/static/...
而不是/static/...
),应用程序也坏了。
如何在package.json中设置主页字段,以便部署到Github Pages(例如),同时仍然在本地开发可用的应用程序?
5条答案
按热度按时间bybem2ql1#
Docs for
create-react-app
解释了如何从不同的相对路径提供相同的构建版本。如果您将主页设置为
资产将相对于
index.html
提供服务。然后,您就可以将应用从http://mywebsite.example
移动到http://mywebsite.example/relativepath
,甚至http://mywebsite.example/relative/path
,而无需重新构建。出于开发目的,使用
yarn start
或npm start
提供服务就足够了。zkure5ic2#
您可以使用
PUBLIC_URL
环境变量来覆盖特定构建的主页,最好在package.json中设置它,例如:jobtbby33#
对于 * 还 * 涵盖react-router-dom的一体式答案:
1.添加
package.json['homepage']
作为您的生产URL。需要注意的是,CRA构建步骤删除了URL的域部分,只留下索引路径。1.为本地主机构建时,执行
PUBLIC_URL=/ npm run build
1.按照this article中的建议,在您的
public/index.html
页面中添加<base href="%PUBLIC_URL%" />
;它将为资产(img、CSS)提供支持,并将公开%PUBLIC_URL%
以供以后重用。1.在创建BrowserRouter (通常为App.js或main.js) 的组件中,添加:
1.用作:
<BrowserRouter basename={basename} />
icnyk63a4#
您可以使用您的开发shell环境覆盖主页设置:
或者,如果您愿意,可以在生成产品之前删除主页设置并配置env:
35g0bw715#
我也遇到过类似的情况,当我在package.json中添加了“homepage”并将其部署到gh-pages中时,图像不会出现。在尝试了许多不同的解决方案后,我最终解决了这个问题,将图像从public文件夹中取出并放到src文件夹中。
到
这似乎对我起到了作用!