output的publicpath和devServer的publicpath有什么关系
有一种情况,一直想不明白,就是output的publicpath和devServer的publicpath不一致的时候,为什么会引用不到相关的静态资源呢?
截取部分webpack.config.js配置:
output:{
path: path.resolve(__dirname,'../dist'),
filename: '[name].js',
publicPath: 'http://localhost:1207/static/'
},
devServer: {
contentBase: path.resolve(__dirname,'../dist') ,
host: 'localhost',
port: 1207,
publicPath: 'http://localhost:1207/web/'
},
上面这种情况,output的publicpath和devServer的publicpath不一致,index.html中引用不了相关静态资源,我说一下我的理解和疑惑:
我的理解:
devServer启动后,相当于在内存中开启了一个node服务器,静态资源的访问入口是devServer配置的publicpath(http://localhost:1207/web/),但是由于output配置的publicpath是http://localhost:1207/static/,所以index.html引用的静态资源路径就是http://localhost:1207/static/xxx.js而不是http://localhost:1207/web/xxx.js,所以报错
我的疑惑:
- output和devServer的publicpath不一致,为什么会访问不到output的publicpath(http://localhost:1207/static/)下的静态资源?output的publicpath是绝对路径为什么访问不了?
- devServer构建编译打包,output和devServer之间的publicpath有什么关系?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
理解这段话你应该就知道原因了
webpack-dev-server输出的文件只存在于内存中,不输出真实的文件
我刚总结的,希望对你有帮助
https://www.jianshu.com/p/cbe...
我也碰到类似的疑惑,我的理解是这样
解决办法是
大概就是这个意思,希望对你有帮助