相关文章推荐
俊秀的凳子  ·  Vue3 + TS ...·  1 周前    · 
机灵的西瓜  ·  Hive 编程专题 之 - ...·  10 月前    · 
暴走的充值卡  ·  ajax发起请求 ...·  1 年前    · 
老实的烈酒  ·  openpyxl.utils.excepti ...·  1 年前    · 
爱健身的木瓜  ·  在Asp.Net MVC ...·  1 年前    · 
< meta charset = "UTF-8" > < meta http-equiv = "X-UA-Compatible" content = "IE=edge" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < title > Document </ title > </ head > < button id = "btn" > 测试模块动态导入 </ button > </ body > </ html >

src/mult.js

export function mult (...args) {
    return args.reduce((total, current) => total * current, 1)

src/mian.js

document.querySelector('#btn').onclick = function(){
  import('./js/mult').then(({ mult }) => {
    console.log('mult',mult(1,2,3,4));

webpack编译的时候就会输出以下报错

ERROR in [eslint] 
E:\1.develop\webpack-demo\src\main.js 
  20:3 error Parsing error: 'import' and 'export' may only appear at the top level 
   ✖ 1 problem (1 error, 0 warnings)
   webpack 5.75.0 compiled with 1 error in 17633 ms

以上的错误ES6模块语法是允许这样写的, ESLint却把它当成错误来处理。

3、报错原因

ESLint默认解析器不支持动态导入

4、解决办法

通过ESLint解析器@babel/eslint-parser来解决

npm instasll -D @babel/eslint-parser

在.eslintrc.js中添加配置

+ parser: "@babel/eslint-parser", parserOptions: { sourceType: 'module',

重新打包即可

网上有的文章说安装babel-eslint,但是babel-eslint已被弃用,会报以下错误:

Parsing error: require() of ES Module E:\1.develop\webpack-demo\node_modules\eslint\node_modules\eslint-scope\lib\definition.js from E:\1.develop\webpack-demo\node_modules\babel-eslint\lib\require-from-eslint.js not supported

需要先移除babel-eslint,然后安装@babel/eslint-parser。 详情请看:github.com/babel/babel…

  • 私信