Javascript 当函数导入到另一个文件时,为什么函数的属性不可见?
我在colled dataservice.js文件中有这个函数:Javascript 当函数导入到另一个文件时,为什么函数的属性不可见?,javascript,ecmascript-6,Javascript,Ecmascript 6,我在colled dataservice.js文件中有这个函数: export function DataServices() { var that = this; that.dataServiceUrl = "/CrossServices/SearchService.svc"; var ds = { getStreets: getStreets }; return ds; function getStreets(expr, c
export function DataServices() {
var that = this;
that.dataServiceUrl = "/CrossServices/SearchService.svc";
var ds = {
getStreets: getStreets
};
return ds;
function getStreets(expr, callback, error) {
//some logic
return result;
}
}
我在mapApp.js文件中导入上述函数,如下所示:
import { DataServices from "/src/js/services/dataservices";
并尝试通过以下方式访问getStreets属性:
DataServices.getStreets(3, null, null);
但我在上面一行中发现了这个错误:
error: Cannot read property 'getStreets' of undefined
知道为什么getStreets属性不可见吗 您正在导出命名函数
DataServices
您需要将其设为默认导出,或按名称导入:
导出默认函数数据服务
或
从“/src/js/services/DataServices”导入{DataServices}代码>使用导入{DataServices}
代替…导出类而不是嵌套函数定义。但是,您的错误消息说,DataServices
未定义,因此您没有正确导出它。您必须将其别名为{},或者导出一个默认函数。我很确定,按照导出的方式,它应该是DataServices.DataServices().getStreets(3,null,null)
。为什么不直接导出函数getStreets(){…}
您的导入/导出不匹配,是getStreets
还是getFeatures
,您实际上在哪里调用DataServices()
创建对象?除非您将其作为方法调用,或将其与new
一起作为构造函数调用,否则不应使用此
,如果您确实将其作为构造函数调用,则不应返回对象literalMatthew,谢谢您的帖子。我试着按照你描述的那样做,但我得到了同样的错误你的导入路径正确吗“/src/js/services/dataservices”
正在从名为src的文件系统的顶级文件夹导入。是,路径正确。我将调试器关键字放在dataservices.js中,它总是在执行此行后触发:import{dataservices}from“/src/js/services/dataservices”;