Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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/2/node.js/42.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 Node.js-从http.get中的函数访问常量_Javascript_Node.js_Function_Api_Require - Fatal编程技术网

Javascript Node.js-从http.get中的函数访问常量

Javascript Node.js-从http.get中的函数访问常量,javascript,node.js,function,api,require,Javascript,Node.js,Function,Api,Require,在下面的代码中,我正在访问当前比特币的英镑值。console.log工作正常 value.js http = require('http'); http.get({ host: 'api.coindesk.com', path: '/v1/bpi/currentprice.json' }, function get_value(response) { // Continuously update stream with data

在下面的代码中,我正在访问当前比特币的英镑值。console.log工作正常

value.js

http = require('http');

http.get({
    host: 'api.coindesk.com',
    path: '/v1/bpi/currentprice.json'
    },
    function get_value(response) {
        // Continuously update stream with data
        var body = '';
        response.on('data', function(d) { body += d; });
        response.on('end', function() {
                 // Data reception is done, do whatever with it!
                var parsed = JSON.parse(body);
                var final_value = parsed.bpi.GBP.rate
                console.log(final_value)
                module.exports = final_value;
            });
    }
);
PORT = 4000;
var http = require('http');
const value = require('./value.js');

var server = http.createServer((req, res) => {
    res.write("Create server working");
});

server.listen(PORT, () => {
    console.log(value);
});

但是,当我尝试从另一个文件访问此值(最终值)时:

server.js

http = require('http');

http.get({
    host: 'api.coindesk.com',
    path: '/v1/bpi/currentprice.json'
    },
    function get_value(response) {
        // Continuously update stream with data
        var body = '';
        response.on('data', function(d) { body += d; });
        response.on('end', function() {
                 // Data reception is done, do whatever with it!
                var parsed = JSON.parse(body);
                var final_value = parsed.bpi.GBP.rate
                console.log(final_value)
                module.exports = final_value;
            });
    }
);
PORT = 4000;
var http = require('http');
const value = require('./value.js');

var server = http.createServer((req, res) => {
    res.write("Create server working");
});

server.listen(PORT, () => {
    console.log(value);
});

我得到的只是{}

我对node.js很陌生,对python更熟悉。我研究过从函数中的函数访问值,但找不到任何解决方案


是否有人建议我如何从单独的文件访问变量final_值?

您可以将
module.exports=final_值
更改为
exports.final_值=final_值
,然后使用

const{final_value}=require('./value.js');
...
服务器。侦听(端口,()=>{
console.log(最终_值);
});

这样做的好处是,您现在可以从
value.js
文件中导出其他值,并以相同的方式只需要它们。
module.exports
exports.value
之间的主要区别在于
module.exports
是一个对象,它将
exports
作为属性,而
exports
只是
module.exports
的别名。本质上,通过使用
module.exports
语法,您正在分配
module.exports
您正在分配给它的对象的值。

您可以将
module.exports=final\u value
更改为
exports.final\u value=final\u value
,然后使用

const{final_value}=require('./value.js');
...
服务器。侦听(端口,()=>{
console.log(最终_值);
});

这样做的好处是,您现在可以从
value.js
文件中导出其他值,并以相同的方式只需要它们。
module.exports
exports.value
之间的主要区别在于
module.exports
是一个对象,它将
exports
作为属性,而
exports
只是
module.exports
的别名。本质上,通过使用
module.exports
语法,您正在分配
module.exports
您正在分配给它的对象的值。

老实说,我更喜欢使用express而不是native Node,但鉴于您正在使用它,我可以给您一些提示来帮助您:

如果你想使用其他人的js文件,你应该导出你想在他们之间共享的内容。在您展示的示例中,它应该是这样的(请注意,我正在导出函数并将其用作函数中的承诺):

然后,您可以通过以下方式在服务器文件中使用它:

...
server.listen(PORT, () => {
    value.then(result => console.log(result));
});

老实说,我更喜欢使用express而不是native Node,但鉴于您正在使用它,我可以给您一些提示来帮助您:

如果你想使用其他人的js文件,你应该导出你想在他们之间共享的内容。在您展示的示例中,它应该是这样的(请注意,我正在导出函数并将其用作函数中的承诺):

然后,您可以通过以下方式在服务器文件中使用它:

...
server.listen(PORT, () => {
    value.then(result => console.log(result));
});

这看起来像是一个异步问题。导入value.js模块时,还没有导出,因为对api的请求尚未完成。您可以在value.js中导出一个方法以在外部使用它来获取最终的_值。这看起来像是一个异步问题。导入value.js模块时,还没有导出,因为对api的请求尚未完成。您可以在value.js中导出一个方法,在外部使用它来获取最终的_值。