有一种情况,一直想不明白,就是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有什么关系?
理解这段话你应该就知道原因了
webpack-dev-server输出的文件只存在于内存中,不输出真实的文件