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

Posted

技术标签:

【中文标题】Webpack 2 - 无法在字符串上创建属性“映射”【英文标题】:Webpack 2 - Cannot create property 'mappings' on string 【发布时间】:2017-07-30 14:34:59 【问题描述】:

从有效的 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。

【问题讨论】:

【参考方案1】:

原来我是 babelifing 两次。

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

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

【讨论】:

简直完美。【参考方案2】:

在我的编译中遇到了类似的问题。发现我对 .js.jsx 都使用了 babel loader。

删除 .jsx 并按预期工作。

我的webpack.config.js 的 sn-p 看起来像这样。


    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'
                ]
           
        
    ]

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于Webpack 2 - 无法在字符串上创建属性“映射”的主要内容,如果未能解决你的问题,请参考以下文章

无法绑定到“routerlink”,因为它不是使用 angular2-webpack-starter 的已知本机属性 [重复]

如何在 Keycloak 中创建脚本映射器?

webpack entry和output配置属性

骨干木偶和 Webpack - 未捕获的类型错误:无法读取未定义的属性“收音机”

VUE JS 2 + WEBPACK 无法读取未定义 VUE RESOURCE 的属性“获取”

TypeError:添加 webpack-subresource-integrity 时无法读取未定义的属性“tap”