运行Create React App的npm run build
后,创建的index.html
如下所示:
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>React App</title><link rel="shortcut icon" href="/favicon.ico"><link href="/main.e606e04b6e0092a87205a9dc4662479c.css" rel="stylesheet"></head><body><div id="root"></div><script type="text/javascript" src="/main.35180d284d8a2058f717.js"></script></body></html>
script
和link
src
/ href
- 属性都指向了错误的方向。应删除前导/
,因为所有生成的文件都在同一目录中。这是一个错误还是我能以某种方式配置这些路径?
答案 0 :(得分:23)
生成的文件应该从Web服务器提供。运行npm run build
时,您应该看到有关在该目录中启动简单本地Web服务器的说明。如果您将此目录部署到真实Web服务器并从根目录提供index.html
,它也可以正常工作。
如果生成的文件引用了没有/
的脚本,则只要添加客户端路由,您的站点就会中断。例如,如果某个应用位于mysite.com
,但也会处理mysite.com/about
之类的网址,则相对路径会导致从mysite.com/about/*.js
加载脚本,这将是404错误。这就是默认情况下所有路径都从root开始的原因。
如果您想从子目录(例如myuser.github.io/myproject
)提供应用,则需要在"homepage"
中添加package.json
字段,例如:
"homepage": "http://myuser.github.io/myproject"
创建React App将根据homepage
设置推断出正确的根路径。此功能自react-scripts@0.2.0
请阅读deployment instructions了解详情。
答案 1 :(得分:0)
我知道这很旧,但是我遇到了同样的问题。在我拥有{"homepage": "./"}
并将其更改为{"homepage": "/"}
的{{1}}之前,似乎可以解决我的问题。