Webpack 2 - 无法在字符串上创建属性“映射”

IT技术 reactjs webpack webpack-2
2021-05-16 01:13:51

从工作的 Webpack v1 配置迁移到 Webpack 2。但在尝试运行构建时遇到错误:

 ERROR in ./src/index.jsx
 Module build failed: TypeError: /home/pierce/Projects/my-js-app/src/index.jsx: Cannot create property 'mappings' on string 

我已经更新了我的装载机以匹配新格式:

module: {
  rules: [
    {
      test: /\.(js|jsx)$/,
      exclude: /node_modules/,
      loader: "babel-loader"
    },
    {
      test: /\.(jpg|png)$/,
      loader: 'file-loader',
      query: {
        name: '[path][name].[hash].[ext]',
      },
    },
    { 
      test: /\.css$/, 
      loader: "style-loader!css-loader" 
    },
    {
      test: /\.scss$/,
      use: [
        { 
          loader: 'style-loader' 
        },
        { 
          loader: 'css-loader'
        }, 
        { 
          loader: 'sass-loader',
          options: { sourceMap: true } 
        }
      ]
    },
    {
      test: /\.(woff|woff2|eot|ttf|svg)(\?v=\d+\.\d+\.\d+)?/, 
      loader: 'url-loader',
      query: { 
        limit: 100000
      }
    },
    { 
      test: /\.icon-svg$/, 
      use: [{loader:'babel-loader'}, {loader: 'svg-react-loader'}] 
    },
    // Bootstrap 3
    { 
      test: /bootstrap-sass\/assets\/javascripts\//, 
      loader: 'imports-loader?jQuery=jquery' 
    }
  ]
},

就好像某些东西没有像以前那样编译,因此导致了 TypeError。

4个回答

原来我是 babelifing 两次。

如果您还webpack.config.js为不同的环境将您的文件拆分为单独的文件,请确保webpack.dev.config.js不包含babel-loader条目(如果您包含的话)webpack.base.config.js

否则,如果您第二次使用加载器两次将导致错误。这不是 Webpack 2 错误,而是 webpack splitting-configs-and-missing-a-small-thing 错误

在我的编译中遇到了类似的问题。发现我是用巴贝尔加载器.js.jsx两个。

已删除.jsx并按预期工作。

我的一个片段webpack.config.js看起来像这样。

{
    test: /\.js$/,
    exclude: [/(node_modules)/],
    use: [
        {
            loader: 'react-hot-loader'
        },
        {
            loader: 'babel-loader',
            options: {
                presets: ['react', 'es2015', 'stage-0'],
                plugins: [
                    'transform-class-properties',
                    'transform-decorators-legacy'
                ]
           }
        }
    ]
}

如果其他人遇到同样的问题,我必须从 loader 中删除以下内容才能使其正常工作

     {
       test: /\.jsx?$/,
       use: ['react-hot-loader/webpack']
     }

就我而言,当我devtool: 'inline-source-map'从 webpack 中删除时它有所帮助