ajm*_*jma 9 javascript webpack
我正在尝试将我的应用程序分块 - 尝试按照webpacks指南进行操作方法(https://webpack.github.io/docs/code-splitting.html).所以我为我的应用程序设置了一个单独的块,我可以看到webpack正在1.bundle.js我的构建文件夹中生成,但是它index.html使用不正确的路径将其粘贴到我的上面,并且在我的控制台中我看到该1.bundle.js文件的获取错误.
所以我的webpack配置看起来像这样(我现在只使用webpack:dev):
return {
dev: {
entry: {
index: './client/app.jsx'
},
output: {
path: path.join(__dirname, '..', '..', 'dist', 'client'),
publicPath: "/dist/client/",
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['es2015']
}
}, {
test: /\.json$/,
loader: 'json-loader'
}]
},
resolve: {
extensions: ['', '.js', '.jsx']
},
resolveLoader: {
fallback: [path.join(__dirname, 'node_modules')]
},
plugins: [
new webpack.DefinePlugin({
"process.env": {
"NODE_ENV": JSON.stringify("dev")
}
})
]
},
Run Code Online (Sandbox Code Playgroud)
在我的index.html中,我手动添加<script src="bundle.js"></script>,并且一直运行良好.看起来当现在构建时,webpack正在我的索引上应用它自己的脚本标记,就像这样
<script type="text/javascript" charset="utf-8" async="" src="/dist/client/1.bundle.js"></script>
Run Code Online (Sandbox Code Playgroud)
但是这条路径不正确,它应该是src="1.bundle.js".我试过调整路径和publicPath,但似乎没有任何工作.有没有办法让webpack添加正确的路径?谢谢!
Eve*_*tss 15
您应该更改publicPath此代码段:
publicPath: "/"
Run Code Online (Sandbox Code Playgroud)
它将始终从根路径为您的块提供服务.
即使它得到了回答和接受,我也会为有类似问题的其他人提供额外的有用信息.
有两个不同的目的,使用2个参数.
webconfigfolder+"../../dist/client"文件夹中.因此,如果您在这种情况下的/dist/client文件存储在文件夹中,但是服务了index.htm,则/dist/client应该提供公共路径,因为./.如果提供htm /dist,则应将公共路径指定为./client/.
公共路径对于为异步加载创建的块很有用,这些块是从浏览器动态调用的.
| 归档时间: |
|
| 查看次数: |
5697 次 |
| 最近记录: |