Closed junglehuang closed 1 year ago
由于缺乏足够的信息,我们暂时关闭了该 Issue。请修改(不要回复) Issue 提供最小重现以重新开启。谢谢。
给一个最小复现看看
+1遇到问题。配置publicPath为一个占位符:__ASSETS_CDN__/,build的结果framework.js不在script标签的src,其他的资源文件没问题
如果是默认的 / 或者一个正确域名,build结果是正确的
版本:@umijs/max,4.2.5
publicPath
必须是一个有效的 url 路径,你如果需要在后续 replace 替换,需要配置成正常的 url ,只不过这个 url 你可以设计成占位格式,比如 publicPath: process.env.NODE_ENV === 'development' ? '/' : 'https://__cdn_domain__/'
。
另外你还需要开启 runtimePublicPath: {}
,并插入 head script ,确保异步块加载时 public path 没问题:
// .umirc.ts
runtimePublicPath: process.env.NODE_ENV === 'development' ? false : {},
headScripts: process.env.NODE_ENV === 'development' ? [] : [
`window.publicPath = 'https://__cdn_domain__/';`,
]
构建后,在部署前,将占位符替换为需要的值即可。
publicPath
必须是一个有效的 url 路径,你如果需要在后续 replace 替换,需要配置成正常的 url ,只不过这个 url 你可以设计成占位格式,比如publicPath: process.env.NODE_ENV === 'development' ? '/' : 'https://__cdn_domain__/'
。另外你还需要开启
runtimePublicPath: {}
,并插入 head script ,确保异步块加载时 public path 没问题:// .umirc.ts runtimePublicPath: process.env.NODE_ENV === 'development' ? false : {}, headScripts: process.env.NODE_ENV === 'development' ? [] : [ `window.publicPath = 'https://__cdn_domain__/';`, ]
构建后,在部署前,将占位符替换为需要的值即可。
占位符我们从umi3开始就是这么在用了,替换逻辑是我们发布平台控制,不在业务项目中。我们有几个别的项目也是 @umijs/max 4.2.5版本,但不会打包出framework.js,所以也不会有问题。我看了配置umi的配置都是相同的,什么情况下会打出framework.js文件呢
开了 codeSplitting
分包策略就会有 framework.js
,因为 umi 4 默认按页分包,所以一定会存在异步加载的 js ,这些 js 的路径如果不提前在 umi 配置文件里配好静态的 publicPath
的话,就必须开启 runtimePublicPath
配置 window.publicPath
,不然会加载不到,要同时考虑这两个情况。
或者你就把 replace mark 搞的特殊唯一,然后对产物所有 js 和 html 文件里的这个 mark 都替换一下。
What happens?
1、将设置成一个非http变量 window.publicPath window.publicPath = '__VAN_STATIC_BASE_PATH__/'; 2、开启配置 runtimePublicPath: {},
3、编译后出下以下结果 `<!DOCTYPE html>
` 以上问题出现子啊。 正确应该将 framework.js 替换到src上。 ## Mini Showcase Repository(REQUIRED) > Please provide a [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) then upload to your GitHub. 请提供 [最小重现](https://stackoverflow.com/help/minimal-reproducible-example),并上传到你的 GitHub 仓库 ## How To Reproduce **Steps to reproduce the behavior:** 1. 2. **Expected behavior** 1. 2. ## Context - **Umi Version**: - **Node Version**: - **Platform**: