在使用 Babel 编译 ES6 模块时,有时会出现 “unexpected token import” 错误,这是因为 Babel 在编译过程中无法处理 ES6 的模块语法。这个问题的解决方法主要有两种,下面简单介绍一下。
解决方法一:使用 Babel 编译器
Babel 是一个 JavaScript 编译器,它可以将 ES6 或者更新版本的 JavaScript 代码转换为浏览器可以识别和运行的 JavaScript 代码。如果想要在项目中使用 ES6 的模块语法,我们可以使用 Babel 编译器来转换代码。
首先,我们需要安装 Babel 编译器。可以通过 npm 安装:
npm install --save-dev @babel/core @babel/cli @babel/preset-env
然后,配置 .babelrc
文件,指定使用 @babel/preset-env
这个预设进行编译:
{ "presets": ["@babel/preset-env"] }
最后,命令行执行 Babel 编译:
npx babel src --out-dir lib
这样,我们的 ES6 模块语法就可以被 Babel 编译器正确地转换成浏览器可以识别的代码了。
解决方法二:使用 Webpack 打包器
如果我们使用了 Webpack 打包器,也可以通过 Webpack 的 babel-loader
模块来处理 ES6 的模块语法。
首先,安装 babel-loader
:
npm install --save-dev babel-loader @babel/core @babel/preset-env
然后,配置 Webpack 的 module.rules
:
-- -------------------- ---- ------- -------------- - - ------- - ------ - - ----- -------- -------- --------------- ---- - ------- --------------- -------- - -------- --------------------- - - - - - -
这样,Webpack 就可以正确地处理我们的 ES6 模块语法了。
示例代码
下面是一段使用 ES6 的模块语法并通过 Babel 编译的示例代码:
// 引入 math.js 模块 import { add } from './math.js'; // 定义变量并输出 const a = 1; const b = 2; console.log(add(a, b));
math.js
模块中的代码:
// 导出 add 函数 export function add(a, b) { return a + b; }
通过 Babel 编译后的代码:
'use strict'; var _math = require('./math.js'); // 定义变量并输出 var a = 1; var b = 2; console.log((0, _math.add)(a, b));
总结
本文介绍了在使用 Babel 编译 ES6 模块时出现 “unexpected token import” 错误的解决方法,分别是使用 Babel 编译器和使用 Webpack 打包器。在实际开发中,我们可以根据具体的项目情况选择合适的解决方法,让我们的代码更加规范和易于维护。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6656de26d3423812e4bddab6