返回未定义变量Javascript的函数
在Javascript中,当我从另一个js文件调用此函数时,我的控制台输出中没有定义。我可以返回名为“obj”的json对象,而不必对其进行未定义吗返回未定义变量Javascript的函数,javascript,node.js,Javascript,Node.js,在Javascript中,当我从另一个js文件调用此函数时,我的控制台输出中没有定义。我可以返回名为“obj”的json对象,而不必对其进行未定义吗 module.exports = { getTechnicPackInfo: function(id){ var http = require("https"); var options = { "method": "GET", "hostname": "solder.io", "path"
module.exports = {
getTechnicPackInfo: function(id){
var http = require("https");
var options = {
"method": "GET",
"hostname": "solder.io",
"path": "/api/aurora-crafters/modpacks/" + id,
"headers": {
"accept": "application/json",
"content-type": "application/Json",
"authorization": "Bearer 00000000000000000000000000000"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
var obj = JSON.parse(body);
return obj;
});
});
req.end();
}
}
你什么也没还
您遇到的问题是由于没有从函数getTechnicPackInfo
返回任何值,而不是从内部函数返回任何值
您要做的是使用fetch
api来获取您试图获取的所有内容,并返回fetch
返回的值。这允许您执行以下操作:
getTechnicPackInfo(...).then(resultingData => resultingData.json()).then(parsedData => ...)
这是因为fetch
返回一个Promise
,允许您使用.json
解析数据(它有自己的功能,因为您不能简单地执行json.parse
),它返回另一个Promise
默认情况下,
fetch
在节点中不存在
fetch
不是node.js中内置的默认函数,因此安装后必须导入它
命令行:
Node.js:
您没有从getTechnicPackInfo函数返回任何内容
您可以使用util.promisify发送http请求,然后返回承诺 上面的回答是正确的,但节点env中不存在api获取,需要添加模块npm:” 如果不想安装此模块,解决方案是向函数getTechnicPackInfo()添加回调参数: file1.js: file2.js
为什么要返回函数调用?你不应该只是返回obj吗?抱歉忘了删除它,当我粘贴到这里时它是错误的,可能是Okay的副本,我会修复它。
npm install --save node-fetch
import fetch from 'node-fetch';
module.exports = {
getTechnicPackInfo: function(id, callback){
var http = require("https");
var options = {
"method": "GET",
"hostname": "solder.io",
"path": "/api/aurora-crafters/modpacks/" + id,
"headers": {
"accept": "application/json",
"content-type": "application/Json",
"authorization": "Bearer 00000000000000000000000000000"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
var obj = JSON.parse(body);
callback(obj);
});
});
req.end();
}
}
var f = require('./file1.js');
f.getTechnicPackInfo(123456, function(obj) {
//do what you need with obj
})