Babel 编译后代码运行出现 ‘_typeof is not defined’ 错误的解决方案

阅读时长 3 分钟读完

问题描述

在使用 Babel 编译 ES6+ 代码为 ES5 时,有时会出现 ‘_typeof is not defined’ 错误,如下:

解决方案

这是由于被编译的代码中使用了 ES6+ 的语法,但 Babel 编译时未正确转换,导致在运行时出现了错误。

解决方案是在 Babel 项目中添加 @babel/plugin-transform-typeof-symbol 插件,它可以将 _typeof 转换为 typeof。

基本用法

  1. 安装 @babel/plugin-transform-typeof-symbol:

  2. 在 .babelrc 中添加插件配置:

示例代码

下面是一个使用了 Symbol 类型的例子,在未添加 @babel/plugin-transform-typeof-symbol 插件时,它会出现 ‘_typeof is not defined’ 错误:

-- -------------------- ---- -------
-- ---- --
----- --- - ---------------
-------------------------- -- ----------- -- --- --------

-- ----- ------
---- --------

--- --- - ---------------
-------------------------- -- ----------- -- --- --------

添加 @babel/plugin-transform-typeof-symbol 插件后,编译后的代码中 _typeof 被正确转换为 typeof,不再出现错误:

-- -------------------- ---- -------
-- ---- --
----- --- - ---------------
--------------------------

-- ----- ------
---- --------

--- --- - ---------------
------------------ --- --- ----------- - ----------- - --------------

总结

由于大多数现代浏览器已经完全支持 ES6+ 的语法,因此在实际项目中使用 Babel 处理代码时,可能会遇到一些问题。本文介绍了如何解决 Babel 编译后代码运行出现 ‘_typeof is not defined’ 错误的问题,希望对前端开发者有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f9ad76f6b2d6eab31201f9

纠错
反馈