我正在将webpack,ES6和Babel用于一个项目。一个模块具有如下的require语句:var ajaxGetJSON = require("../utils/ajaxGetJSON");
该捆绑包编译正常,但引发了运行时错误,Uncaught TypeError: ajaxGetJSON is not a function
这是对webpack提供给我的模块的对象的检查:
当我将require更改为import ajaxGetJSON from "../utils/ajaxGetJSON";
时,不会发生运行时错误,并且应为功能ajaxGetJSON
的被检查对象可以正常工作。
ajax模块使用export default myObject
。
为什么切换到导入解决了我的问题?
最佳答案
从调试器工具提示中可以看到,require()
产生一个ES6模块对象(babel将其转换为模块对象),该对象不是函数,但具有其.default
属性。ajaxGetJSON
是该模块的默认导出,您应该这样导入。如果使用的是ES6模块,则完全不应使用require
。