当前位置: 首页 > 知识库问答 >
问题:

当模块:false时无法导出webpack.config

凌联
2023-03-14

在我的index.js中,我使用webpack-dev-middleware/webpack-hot-middleware,我需要我的webpack.config并将其用于编译器。

index.js

  const webpack = require('webpack')
  const webpackConfig = require('../../webpack.config.js')
  const compiler = webpack(webpackConfig)
  const webpackDevMiddleware = require('webpack-dev-middleware')

  app.use(webpackDevMiddleware(compiler, {
    publicPath: webpackConfig.output.publicPath,
    hot: true,
    noInfo: true,
    stats: {
      colors: true
    }
  }))

  app.use(require('webpack-hot-middleware')(compiler))

我试图通过require和module.exports使用Common.js导出我的webpack.config,但出现错误

TypeError: Cannot assign to read only property 'exports' of object '#<Object>'

webpack.config

'use strict'

const path = require('path')
const webpack = require('webpack')
const publicPath = path.resolve(__dirname, './src/client')
const buildPath = path.resolve(__dirname, './src')


process.noDeprecation = true

module.exports = {
  devtool: 'source-maps',
  performance: {
    hints: false
  },
  context: publicPath,
  entry: {
    bundle: [
      'react-hot-loader/patch',
      'webpack-hot-middleware/client?reload=false&noInfo=true',
      'script-loader!jquery/dist/jquery.min.js',
      'script-loader!tether/dist/js/tether.min.js',
      'script-loader!bootstrap/dist/js/bootstrap.min.js',
      './app.js'
    ]
  },
  output: {
    path: path.join(buildPath, 'dist'),
    filename: '[name].js',
    publicPath: '/'
  },
  resolve: {
    extensions: ['.js', '.jsx'],
    alias: {
      CountdownForm: path.resolve(__dirname, 'src/client/scenes/countdown/components/CountdownForm.jsx'),
      Countdown: path.resolve(__dirname, 'src/client/scenes/countdown/index.jsx'),
     ..
    }
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules|dist|build/,
        loader: 'babel-loader',
        options: {
          plugins: [
            [
              'babel-plugin-react-css-modules',
              {
                context: publicPath,
                filetypes: {
                  '.scss': 'postcss-scss'
                }
              }
            ]
          ]
        }
      },
      {
        test: /\.local\.(css|scss)$/,
        use: [
          'style-loader',
          'css-loader?modules&importLoaders=1&localIdentName=[path]___[name]__[local]___[hash:base64:5]',
          'postcss-loader',
          'sass-loader',
          {
            loader: 'sass-resources-loader',
            options: {
              resources: path.resolve(__dirname, './src/client/styles/global/sass-resources.scss')
            }
          }
        ]
      },
      {
        test: /^((?!\.local).)+\.(css|scss)$/,
        use: [
          'style-loader',
          'css-loader',
          'postcss-loader',
          'sass-loader'
        ]
      }
    ]
  },
  plugins: [
    new webpack.NamedModulesPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoEmitOnErrorsPlugin(),
    new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery',
      jquery: 'jquery'
    }),
    new webpack.DefinePlugin({
      'process.env': {
        NODE_ENV: JSON.stringify('development')
      }
    })
  ]
}

如果我使用ES6(我使用的是Babel,这通常有效)在顶部使用导入语句而不是要求和导出默认值而不是module.exports我得到这个错误

Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
 - configuration misses the property 'entry'.

所有这一切都是因为modules:false在my.babelrc中,如果我删除Common.js的方法有效,但我需要它。如何使用modules:false将webpack.config导出到编译器

{
  "presets": [
    "react",
    ["es2015", { "modules": false }],
    "stage-0"
  ],
  "plugins": [
    "react-hot-loader/babel",
    "transform-runtime"
  ]
}

共有1个答案

易衡
2023-03-14

转换运行时添加了导入,这会导致导入模块混合。导出

简单的修复方法是用es6export替换module.exports

module.exports = { ...webpackconfig } 

变成了

export default { ...webpackconfig }

并更新您的index.js使用默认导出

const webpackConfig = require('../../webpack.config.js').default

您可以找到有关这些问题的更多信息

https://github.com/webpack/webpack/issues/4039 https://github.com/webpack/webpack/issues/3917

 类似资料:
  • 当我试图编译我的新的模块化Java 11应用程序时,我收到了这个错误消息: 这似乎是一个依赖项的依赖项的问题。我甚至找不到是哪个模块把它拉进来,这样我就可以更新它了。 我使用的是openjdk 11.0.2、IntelliJ 2018.3.4、Maven 有什么建议我可以如何解决或修复这个问题吗?我在这个问题上找到的文件很少。

  • 问题内容: 我尝试用Python学习TensorFlow。我的问题是导入TF模块。这是我的配置: Python 3.6.1 , Windows 7 (带有MSVCP140.dll) 我已经通过命令(在电源外壳中)安装了TensorFlow。有用。 但是当我运行python环境并尝试导入Tensor Flow时 我遇到错误,此错误引发了另一个与之相关的错误,但是一开始我想先解决此问题 追溯(最近一次

  • 我试图上传一个图像到内存使用multer,然后处理它与夏普和保存到磁盘。当我尝试在我的中间件中做多个module.exports时。 错误是: TypeError FileUpload.Single不是函数 到目前为止的路线是: 当我刚刚有下面的路由之前,尝试添加图像处理,我没有得到一个错误;

  • 关于在ES6中使用导入导出,我得到以下错误: SyntaxError:导出声明只能出现在顶层 我上网找办法解决这个问题,但我做不到。谁能解释一下。我是ES6的新手,特别是导入和导出。(我使用StealJS完全是为了这种东西)谢谢! js文件有: 应用程序JS functions.js

  • 我正在尝试构建一个electron Desctop应用程序,但当我想使用nodejs的文件系统(fs)时,我遇到了错误“UncaughtReferenceError:require未定义”。当我搜索这个问题时,我在您的包中找到了一些提示,如“delete”类型:“module”。json或使用导入,但对我来说没有任何效果。一般来说,我不能使用任何模块,不仅仅是fs,而是我的主模块中的所有模块。js

  • 我正在使用Ubuntu14.04计算机,试图将google.protobuf模块导入到Python2.7中。 我已经试过了 和 没有成功。 在python内部,我得到一个错误,即: “导入错误:没有名为google.protobuf的模块” 编辑1: 对不起,谢谢大家的评论。我还是Ubuntu和StackOverflow的新手。 具体来说,我输入到命令行 并获得反馈 Traceback(最近的调用