gpt4 book ai didi

javascript - module.exports 返回未定义

转载 作者:行者123 更新时间:2023-11-30 20:30:13 25 4
gpt4 key购买 nike

我目前是 Node JS 的新手,今天我试图从文件 data.json读取数据。

这是 JSON 文件:

{"username":"rahul_v7","password":"9673"} {"username":"7vik","password":"3248"} {"username":"pradypot_2","password":"6824"} {"username":"ad_1","password":"9284"} {"username":"premchand_4","password":"4346"} 

并且,我使用文件 GetData.js 中的以下代码读取 data.json 中的数据:

'use strict';
const fs = require('fs');

let res = '', resObjs = [];
let fin = fs.createReadStream('F:/RahulVerma/NodeJS/data.json', 'utf-8');
fin.on('data', data => {
if(data.length > 0) res += data;
}).on('end', () => {
if(res.length > 0) {
let resArr = res.trim().split(' ');

for(let i = 0; i < resArr.length; i++) {
resObjs.push(JSON.parse(resArr[i]));
}

module.exports.objects = resObjs;
}
});

如您所见,我正在导出resObjs 数组,它实际上是一个对象数组,到另一个名为AppendData.js,如下所示:

'use strict';
const fs = require('fs');
const getObjs = require('./GetData');

console.log(getObjs.objects);

但是,当我在 Node.js 9.3.0 (ia32) 中运行 AppendData.js 时,它会给出以下输出:

Output Image

最佳答案

您正在尝试在对象被读取之前使用它们。请记住,您读取流的代码异步运行,并且您的代码中没有任何内容试图协调它与模块加载。所以 AppendData.js 没有看到 objects 导出,因为它在代码运行时还不存在。

相反,返回 AppendData.js 可以使用的对象的 promise;见 *** 评论:

'use strict';
const fs = require('fs');

// *** Export the promise
module.exports.objectsPromise = new Promise((resolve, reject) => {
let res = '', resObjs = [];
let fin = fs.createReadStream('F:/RahulVerma/NodeJS/data.json', 'utf-8');
fin.on('data', data => {
if(data.length > 0) res += data;
}).on('end', () => {
if(res.length > 0) {
let resArr = res.trim().split(' ');

for(let i = 0; i < resArr.length; i++) {
resObjs.push(JSON.parse(resArr[i]));
}

resolve(resObjs); // *** Resolve the promise
}
}).on('error', error => {
reject(error); // *** Reject the promise
});
});

请注意,我添加了一个错误处理程序。

然后:

'use strict';
const fs = require('fs');
const getObjs = require('./GetData');

getObjs.objectsPromise
.then(console.log)
.catch(error => {
// Do something
});

再次注意错误处理程序。

关于javascript - module.exports 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50437362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com