Vue.js3.2更新webpack后报exports is not defined错误如何解决
问题定位
Uncaught ReferenceError: exports is not defined 报错是webpack配置错误直接导致的:你在配置中写了target: "node"字段,该配置会强制webpack按照Node.js运行时规则打包代码,产物里会直接引用Node环境全局存在的exports、module等CommonJS专属变量,而浏览器运行时根本没有这些全局变量,加载chunk-vendors.js时就会触发引用错误。
你配置里的resolve.fallback逻辑是正确的,这部分作用是给浏览器环境补齐path、os这类Node内置模块的浏览器端polyfill,不需要改动。
修复步骤
- 打开项目根目录的
vue.config.js文件 - 删除
configureWebpack节点下的target: "node"行,修改完成的配置参考:
module.exports = { configureWebpack: { resolve: { fallback: { "path": require.resolve("path-browserify"), "os": require.resolve("os-browserify/browser"), } } } }
- 停掉当前运行的开发服务,重新执行项目启动命令(通常是
npm run serve),清除浏览器缓存后再访问页面,报错就会消失。
额外提醒
Vue CLI创建的项目默认已经把webpack的target配置为适配浏览器的web值,不要手动覆盖这个配置。如果后续需要打包给Node端用的产物(比如SSR场景),直接给构建命令加--target node参数即可,不要全局修改webpack配置影响浏览器端正常构建。
内容的提问来源于stack exchange,提问作者Joaquín Laks
相关产品推荐
相关产品推荐

