webpack.config.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. const path = require('path');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin');
  3. const webpack = require('webpack');
  4. module.exports = {
  5. mode: 'development',
  6. entry: './src/index.js',
  7. output: {
  8. path: path.resolve(__dirname, 'dist'),
  9. filename: 'bundle.js'
  10. },
  11. // 添加处理Node.js模块的配置
  12. resolve: {
  13. fallback: {
  14. "fs": false,
  15. "path": require.resolve("path-browserify"),
  16. "buffer": require.resolve("buffer/"),
  17. "stream": require.resolve("stream-browserify"),
  18. "util": require.resolve("util/"),
  19. "assert": require.resolve("assert/"),
  20. "os": require.resolve("os-browserify/browser"),
  21. "process": require.resolve("process/browser")
  22. },
  23. // 添加别名配置,修复ESM模块中的process/browser引用问题
  24. alias: {
  25. 'process/browser': require.resolve('process/browser')
  26. }
  27. },
  28. module: {
  29. rules: [
  30. {
  31. test: /\.js$/,
  32. exclude: /node_modules/,
  33. use: {
  34. loader: 'babel-loader',
  35. options: {
  36. presets: ['@babel/preset-env', '@babel/preset-react']
  37. }
  38. }
  39. },
  40. {
  41. test: /\.css$/,
  42. use: ['style-loader', 'css-loader']
  43. },
  44. {
  45. test: /\.(png|svg|jpg|jpeg|gif|woff|woff2)$/i,
  46. type: 'asset/resource'
  47. }
  48. ]
  49. },
  50. plugins: [
  51. new HtmlWebpackPlugin({
  52. template: './public/index.html',
  53. favicon: './public/logo.ico'
  54. }),
  55. // 添加Buffer polyfill
  56. new webpack.ProvidePlugin({
  57. Buffer: ['buffer', 'Buffer'],
  58. }),
  59. // 添加process polyfill
  60. new webpack.ProvidePlugin({
  61. process: 'process/browser',
  62. }),
  63. // 添加全局变量定义,确保process.browser设置为true
  64. new webpack.DefinePlugin({
  65. 'process.browser': true
  66. })
  67. ],
  68. devServer: {
  69. static: {
  70. directory: path.join(__dirname, 'public'),
  71. },
  72. compress: true,
  73. port: 9000,
  74. open: true
  75. }
  76. };