我正在将webpack,ES6和Babel用于一个项目。一个模块具有如下的require语句:

var ajaxGetJSON = require("../utils/ajaxGetJSON");

该捆绑包编译正常,但引发了运行时错误,

Uncaught TypeError: ajaxGetJSON is not a function

这是对webpack提供给我的模块的对象的检查:

javascript - 为什么从导入切换到需要修复运行时错误?-LMLPHP

当我将require更改为import ajaxGetJSON from "../utils/ajaxGetJSON";时,不会发生运行时错误,并且应为功能ajaxGetJSON的被检查对象可以正常工作。

ajax模块使用export default myObject

为什么切换到导入解决了我的问题?

最佳答案

从调试器工具提示中可以看到,require()产生一个ES6模块对象(babel将其转换为模块对象),该对象不是函数,但具有其.default属性。

ajaxGetJSON是该模块的默认导出,您应该这样导入。如果使用的是ES6模块,则完全不应使用require

09-18 13:28