1.Cannot find module '@babel/plugin-proposal-class-properties'
webpack4 的配置如下
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
options:{
presets: ['@babel/preset-env'],
plugins: ['@babel/plugin-proposal-class-properties']
}
}
],
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
options:{
presets: [[require.resolve('@babel/preset-env')]],
plugins: [require.resolve('@babel/plugin-proposal-class-properties')]
}
}
],
2.编译后发现有些语法没有编译正确。比如编译如下文件,发现有些没有被编译.
import {
data,
} from './app'
let app = 'app'
console.log(`${data.index}`)
console.log(require(`./${data.index}`))
console.log(require('./'+data.index+''))
console.log(require('./'+`${data.index}`+''))
编译后如下
loose 这个选项设置为true时,它会尽可能的将ES6+代码转化为ES5标准代码,而非用ES5去实现的ES6+代码,最核心的体现就是class语法的实现。在ES5中,我们通过SomeFunction.prototype.someMethod来创建原型链方法,而在ES6中它的实现完全不同。当loose为true时,preset-env将class语法转化为原型链的实现方式。