Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays NodeJS模块导出由类实例化的项数组_Arrays_Node.js_Class_Node Modules - Fatal编程技术网

Arrays NodeJS模块导出由类实例化的项数组

Arrays NodeJS模块导出由类实例化的项数组,arrays,node.js,class,node-modules,Arrays,Node.js,Class,Node Modules,在NodeJS中,我实例化了来自两个不同类的两个对象,将它们放入一个数组中,然后使用array.map映射它们。如果我在一个文件中完成这一切,它工作得很好。但是,如果我在另一个文件中创建对象并导出/需要该数组,则该数组是未定义的 //code from file ClassA.js: exports.ClassA = class ClassA { constructor(name) { this.name = name; } } //code f

在NodeJS中,我实例化了来自两个不同类的两个对象,将它们放入一个数组中,然后使用array.map映射它们。如果我在一个文件中完成这一切,它工作得很好。但是,如果我在另一个文件中创建对象并导出/需要该数组,则该数组是未定义的

//code from file ClassA.js:

exports.ClassA = class ClassA {
    constructor(name) {       
        this.name = name;
    }
}

//code from file ClassB.js

exports.ClassB = class ClassB {
    constructor(name) {       
        this.name = name;
    }
}
这种方式有效:

//code from file index.js
const { ClassA } = require("./ClassA");
const { ClassB } = require("./ClassB");

const myClassItem1 = new ClassA('Class A Item');
const myClassItem2 = new ClassB('Class B Item');

const myArray = [];
myArray.push(myClassItem1, myClassItem2);

console.log('array', myArray); //returns: [ ClassA { name: 'Class A Item' }, ClassB { name: 'Class B Item' } ]
console.log(myArray.map(item => item.name)); //returns: [ 'Class A Item', 'Class B Item' ]
//将项实例化分离到不同的文件中不会

//code from file items.js
const { ClassA } = require("./ClassA");
const { ClassB } = require("./ClassB");

const myClassItem1 = new ClassA('Class A Item');
const myClassItem2 = new ClassB('Class B Item');

const myArray = [];
myArray.push(myClassItem1, myClassItem2);

console.log(myArray); //returns: [ ClassA { name: 'Class A Item' }, ClassB { name: 'Class B Item' } ]

exports.myArray;

//code from file index.js
const { myArray } = require('./items');

console.log(myArray); //returns undefined
console.log(myArray.map(item => item.name)) //throws error 

问题在于线路

exports.myArray;
它什么也不做;它引用了
导出
上不存在的属性,就是它。您需要显式指定给导出对象的属性,这样当文件在别处为required时,您可以使用required对象上的属性查找来获取所需的值:

exports.myArray = myArray;
然后

const { myArray } = require('./items');
将根据需要检索数组

您还可以完全避免使用独立变量,这可能会让事情更清楚:

exports.myArray = [myClassItem1, myClassItem2];

问题在于线路

exports.myArray;
它什么也不做;它引用了
导出
上不存在的属性,就是它。您需要显式指定给导出对象的属性,这样当文件在别处为required时,您可以使用required对象上的属性查找来获取所需的值:

exports.myArray = myArray;
然后

const { myArray } = require('./items');
将根据需要检索数组

您还可以完全避免使用独立变量,这可能会让事情更清楚:

exports.myArray = [myClassItem1, myClassItem2];