Javascript 当函数导入到另一个文件时,为什么函数的属性不可见?

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

我在colled dataservice.js文件中有这个函数:

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”;