javascript - 当在文件名中包含块哈希时,webpack 在 publicPath 中设置哈希会导致错误?
问题描述
webpack打包项目时,需要将dist文件上传到cdn,然后提高访问速度。
我需要将之前的捆绑包保留在 CDN 中,因此我使用构建哈希来唯一化捆绑包。
但是我发现[hash]
在?publicPath
chunkhash
filename
我知道删除chunkhash
infilename
可以解决问题,但我仍然想知道为什么?
这是我的小型 webpack 配置:
const path = require("path");
module.exports = {
entry: "./src/index.js",
output: {
path: path.resolve(__dirname, "./dist"),
filename: "[chunkhash].js",
publicPath: "https://my.cdn/[hash]/"
}
};
错误信息:
块主 [entry] [chunkhash].js 中的错误不能将 [chunkhash] 或 [contenthash] 用于“[chunkhash].js”中的块(改用 [hash])
解决方案
你误解了这个publicPath
概念。公共路径是从文件所在的本地域的根目录开始,webpack 必须请求获取必要的其他块的位置。例如,如果是/
,webpack 将请求${CURRENT_DOMAIN}/dj834j9384j123.js
. 所以 publicPath 必须是一种路径。
而且,如果你使用 webpack-dev-server 或类似的,不应该使用 chunkhash,只能使用 hash。
推荐阅读
- java - 在mvvm中向下滚动recyclerview到底部
- android - 无法打开选定的 vm 调试端口
- visual-studio - Visual Studio 表单编辑器错误
- javascript - 通过屏幕旋转更改图像宽度和高度
- javascript - 来自 jQuery 选择器的奇怪输出
- python - Visual Studio Code 中 TensorFlow 的导入错误
- sql - 有值和没有 PostgreSQL 的条件
- c# - IBM DB2 连接问题 c#
- python - 在半字节组中打印二进制数的简单方法
- java - 我的应用程序总是弹出“不幸的是,myApps 已停止”