重大变化:webpack < 5 用于默认包含 node.js 核心模块的 polyfill

新手上路,请多包涵

我正在尝试在我的 Laravel/Vue.js 应用程序中使用 Socket.io。但是运行时出现此错误 npm run dev

 Module not found: Error: Can't resolve 'path' in '/home/nicolas/LaravelProjects/Chess/node_modules/socket.io/dist'

BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.

If you want to include a polyfill, you need to:
    - add a fallback 'resolve.fallback: { "path": require.resolve("path-browserify") }'
    - install 'path-browserify'
If you don't want to include a polyfill, you can use an empty module like this:
    resolve.fallback: { "path": false }

webpack compiled with 9 errors

我尝试通过添加 resolve.fallback: { "path": false } 来更改 webpack.config.js 文件,但这似乎没有帮助。我可能做错了,因为我的项目中有 4 个 webpack.config.js 文件(我不知道为什么)。

也许我可以降级 webpack?谢谢!

原文由 Nicolas Nicolas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.8k
2 个回答

我终于找到了解决方案。使用 laravel,您必须更改 webpack.mix.js 文件而不是 webpack.config.js。

原文由 Nicolas Nicolas 发布,翻译遵循 CC BY-SA 4.0 许可协议

这个修复对我有用(Vue 3):

  1. 在 vue.config.js 中,添加:
 const { defineConfig } = require('@vue/cli-service')
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin")
module.exports = defineConfig({
  transpileDependencies: true,
  configureWebpack: {
    plugins: [
      new NodePolyfillPlugin()
    ]
  }

})

  1. 其次是 npm install node-polyfill-webpack-plugin

原文由 hjpithadia 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题