在配置imports-loader时报错了

来源:4-11 Shimming 的作用

一脚一个榴莲

2019-05-05

module:{ // module的作用就是当你要打包某个模块就配置这个模块。如打包图片这个模块,就配置打包图片
    rules:[{ 
			test: /\.js$/, 
			exclude: /node_modules/, // exclude意思是排除。如果是在node_modules里的js文件(因为里面的js文件早就处理成ES5的代码了),就不使用Babel来处理。
      use:[
        {
          loader:'babel-loader' // 使用Babel处理ES6语法
        },
        {
          loader:'imports-loader?this=>window' // 将模块中的this指向window
        }
      ],
      //**************************************和老师代码的区别就是没有将下面的配置放在.babelrc文件中,然后我运营npm run dev时就报错了**************************************************
      options:{  // babel的opstions如果配置项太多,可以在根目录写一个.babelrc文件(了解就行),并将options所有配置放进去即可。 
        presets:[   //为babel配置参数preset
            ['@babel/preset-env'
              ,{//这个数组的第二个对象参数为preset的配置
                useBuiltIns:'usage', // 不把**所有**es6转es5的兼容代码打包到出口文件,只将你写的代码出现的es6语法,将这些es6转es5的兼容代码打包到出口文件,这样打包的文件会小很多。
                corejs: 3, // 现在光设置useBuiltIns为usage不行了,还需要设置corejs为3。注意要先安装corejs
              }
            ],
            '@babel/preset-react'
        ],
        plugins:['@babel/plugin-syntax-dynamic-import'] // 使用import异步加载时需要用到的插件
      }
		},]
  },

和老师代码的区别就是没有将babel的配置放在.babelrc文件中,然后我运营npm run dev时就报错了
图片描述

写回答

2回答

weixin_慕丝7060995

2020-03-26

这里应该是把options 放在和babel-loader同级的对象里, 我这么写能启动起来

[{

    loader: 'babel-loader',

    options: {

        presets: [['@babel/preset-env', {

            targets: {

                chrome: '67'

            },

            corejs: '2',

            useBuiltIns: 'usage'

        }]],

        plugins:  ['transform-es2015-modules-commonjs']

    }

}, {

    loader: 'imports-loader?this=>window'

}]


0
0

Dell

2019-05-06

新版本loader不能加参数了,this=>window你查下imports-loader文档最新的配置方式,需要放到options里了

0
4
百兽凯多00
回复
白马本白
options是对babel-loader的配置,需要写在babel-loader那一层,参考上面 weixin_慕丝7060995 同学的代码
2020-04-23
共4条回复

从基础到实战 手把手带你掌握新版Webpack4.0

知识点+项目实例+原理讲解 全方位解析Webpack4新版本

3627 学习 · 1291 问题

查看课程