当 webpack 打包项目时,我需要将 dist 文件上传到 cdn,然后提高访问速度。
我需要将 before bundle 保留在 cdn 中,所以我使用构建哈希来唯一捆绑包。
但是我发现设置[hash]
publicPath
在filename
chunkhash
时会导致错误?
我知道删除filename
中的chunkhash
可以解决问题,但我仍然想知道为什么?
这是我的小 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]/"
}
};
错误信息:
块主 [条目] 中的错误 [块哈希].js 不能在"[chunkhash].js"中使用 [chunkhash] 或 [contenthash](改用 [hash]
(
你误解了publicPath
的概念。公共路径是 webpack 必须从文件所在的本地域的根目录请求以获取必要的其他块的地方。例如,如果是/
,webpack 将请求${CURRENT_DOMAIN}/dj834j9384j123.js
。所以 publicPath 必须是一种路径。
而且,如果您使用的是 webpack-dev-server 或类似服务器,则不应使用 chunkhash,而只能使用哈希。