为什么切换到require需要修复运行时错误?

时间:2016-02-24 18:10:00

标签: javascript module ecmascript-6 webpack babeljs

我正在使用webpack,ES6和Babel进行项目。模块有一个如下所示的require语句:

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

捆绑编译正常,但抛出了运行时错误

Uncaught TypeError: ajaxGetJSON is not a function

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

enter image description here

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

ajax模块使用export default myObject

为什么切换到导入修复了我的问题?

1 个答案:

答案 0 :(得分:1)

从调试器工具提示中可以看出,require()产生一个ES6模块对象(这是babel转换模块的对象),它不是一个函数,而是具有.default属性的函数。 / p>

ajaxGetJSON是该模块的默认导出,您应该将其导入。如果您使用的是ES6模块,则根本不应使用require