2018-10-23更新
最完美的解决办法是在package.json
最后添一个"homepage":"./"
下面的是常规方法
痛点
在create-react-app
创建的项目使用npm build
打的包,必须通过形如http://localhost:3000
这样的端口或者域名作为根目录。
否则如果直接在资源管理器中通过双击打开,页面空白。
问题所在
为了解决这种情况,通过f12查看了Elements,发现加载的script标签全都是scripts/
开头的,而按我们需要的应该是形如./scripts/
的相对路径。
解决办法
npm eject
: 将封装在create-react-app
中的配置全部反编译到当前项目,以取得 webpack 文件的控制权- 修改新出现的config/目录下的配置文件paths.js第37行(getServedPath函数)
/** * 原函数 */ function getServedPath(appPackageJson) { const publicUrl = getPublicUrl(appPackageJson); const servedUrl = envPublicUrl || (publicUrl ? url.parse(publicUrl).pathname : '/';); // 修改上面最后的'/'; return ensureSlash(servedUrl, true); }
/** * 新函数 */ function getServedPath(appPackageJson) { const publicUrl = getPublicUrl(appPackageJson); const servedUrl = envPublicUrl || (publicUrl ? url.parse(publicUrl).pathname : './';); // 改绝对路径'/';为相对路径'./'; return ensureSlash(servedUrl, true); }