Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Javascript 是否有方法在http请求中导出module.exports变量_Javascript_Node.js_Ajax - Fatal编程技术网

Javascript 是否有方法在http请求中导出module.exports变量

Javascript 是否有方法在http请求中导出module.exports变量,javascript,node.js,ajax,Javascript,Node.js,Ajax,好吧,我在互联网上搜索了一下,想找到答案,但都失败了。所以我的问题是保存和存储https GET请求中的信息,并在其他地方使用它。是的,我知道这是在处理异步自然节点JS。我的想法是使用module.exports.json_数据,并要求将其保存在同一文件夹中的新文件中,然后访问该文件 const https = require("https"); var json; function getting_order(){ var options = { hostname:

好吧,我在互联网上搜索了一下,想找到答案,但都失败了。所以我的问题是保存和存储https GET请求中的信息,并在其他地方使用它。是的,我知道这是在处理异步自然节点JS。我的想法是使用module.exports.json_数据,并要求将其保存在同一文件夹中的新文件中,然后访问该文件

const https = require("https");
var json;
function getting_order(){

    var options = {
        hostname: "some_url.com",
        port: 443,
        path: "/certain/endpoint/",
        method: "GET"
    };


    var req = https.request(options, (res) => {
        let responseBody = "";

        res.setEncoding("UTF-8");

        res.on('data',(chunk) => {
            responseBody += chunk;
        })

        res.on('end',() =>{
            json = JSON.parse(responseBody)
            exports.json = json;
        })

    });
    req.end();
};

module.exports.getting_order = getting_order;
请注意以下文件中的exports.json=json:

res.on('end',() =>{
   json = JSON.parse(responseBody)
   exports.json = json;
})

所以我的问题是,这是否有效,并将json保存到其他文件中使用?

不,这是不可能的,但是根据我的说法,通过查看您的代码,您试图将json发送回调用getting_order函数的人。所以您应该将回调函数作为参数传递,并在接收json时调用该函数

如何使用上述解决方案


是的,你能做到。但是,当您导入模块时,您永远不知道.json是否已准备就绪,或者在未准备就绪时如何等待它。所以不要这样做。导出一个承诺,或者更好,从函数中返回它。不要这样做。如果需要持久化到文件系统,请使用fs.writeFile。不要让您的代码更难理解或违反预期模式。@zero298仍然有竞争条件;如果他们只需要对动态数据进行操作,我看不出这有什么帮助。@DaveNewton此代码存在多个问题。我只提到了OP试图为一些不应该真正使用的东西过载的事实。Bergi已经指出了异步问题。整个方法都是有缺陷的。@zero298耸耸肩,我只是不明白涉及文件系统有多重要。YMMV。
const https = require("https");
var json;
function getting_order(callback){

    var options = {
        hostname: "some_url.com",
        port: 443,
        path: "/certain/endpoint/",
        method: "GET"
    };


    var req = https.request(options, (res) => {
        let responseBody = "";

        res.setEncoding("UTF-8");

        res.on('data',(chunk) => {
            responseBody += chunk;
        })

        res.on('end',() =>{
            json = JSON.parse(responseBody)
            callback(json);
        })

    });
    req.end();
};

module.exports.getting_order = 
//call like this
getting_order(function(order_json) {
    //you will receive json here
    console.log(order_json);
});