Javascript Node.js-从http.get中的函数访问常量
在下面的代码中,我正在访问当前比特币的英镑值。console.log工作正常 value.jsJavascript 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
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中导出一个方法,在外部使用它来获取最终的_值。