在服务器端(nodejs / express),导出和引用此文件(使用Attempt1)没有问题。

// collectionFile.js
function collection() {
    let data = {};
    function getData(key) {
        return data[key];
    }
    function setData(key, value) {
        data[key] = value;
    }
    return {
        getData: getData,
        setData: setData
    };
}

const instanceOfCollection = collection();


在客户端(反应),我只是无法引用和访问getData函数。以下是我尝试过的一些组合。他们都不工作。我该如何运作?

// Attempt1: export
// module.exports.getter = instanceOfCollection.getData;

// Attempt1: import
// const getter = require('./collectionFile').getter;
// Uncaught TypeError: getter is not a function

// Attempt2: export
// export default { instanceOfCollection };

// Attempt2: import
// import instanceOfCollection from './collectionFile';
// const instance = instanceOfCollection.getData;
// Uncaught TypeError: Cannot read property 'getData' of undefined

// Attempt3: export
// export const instanceOfCollection = collection();

// Attempt3: import
// import { instanceOfCollection } from './collectionFile';
// const instance = instanceOfCollection.getData;
// Uncaught TypeError: Cannot read property 'getData' of undefined


编辑:原来我是从文件B引用文件A,也是从文件A引用文件B

最佳答案

有很多方法可以执行此类操作:


ES5出口

module.export = instanceOfCollection

然后

var getData = require('my_module').getData
ES6导出

export defualt instanceOfCollection

然后

import { getData, setData } from 'my_module'
ES6命名为export

export const setter = instanceOfCollection.setData export const getter = instanceOfCollection.getData

然后

import { setter, getter } from 'my_module'

要么

import * as myCollection from 'my_module' myCollection.getter() myCollection.setter()
重命名的ES5

module.export = { getter: instanceOfCollection.getData, setter: instanceOfCollection.setData, }

然后

const { setter, getter } = require('my_module')

要么

const getter = require('my_module').getter const setter = require('my_module').setter


希望他们中的一些会为您工作。

关于javascript - ES6中的导出功能/react,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48022159/

10-16 12:52