gpt4 book ai didi

javascript - 使用 Node js从另一个文件调用两个文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:09 24 4
gpt4 key购买 nike

我有一个名为node.js的文件:

var net = require('net');

var crypto = require('crypto');

//sjcl
var sjcl = require('./sjcl');

//retrive fb profile
var loadFb = require('./loadFb.js');
var loadFeed = require('./loadFeed.js');

//read json user file
var fs = require('fs');
var text = fs.readFileSync(__dirname + '/users','utf8');

var HOST = 'localhost';
var PORT = 7000;

net.createServer(function(sock) {

// We have a connection - a socket object
console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort);

// Add a 'data' event handler to this instance of socket
sock.on('data', function(data) {

console.log('User request profile of: ' + data);
//var date = (data.toString()).split("***");
//var from = date[1];

loadFb(extendetPath, function(pageData)
{

loadFeed(extendetPath2, function(pageData2)
{

var fs = require('fs');
var profileText = fs.readFileSync('/tmp/profile','utf8');
console.log(profileText);
sock.write(profileText);


});

});
});

// Add a 'close' event handler to this instance of socket
sock.on('close', function(data) {
console.log('CLOSED: ' + sock.remoteAddress +' '+ sock.remotePort);
});

}).listen(PORT);

console.log('Server listening on ' + HOST +':'+ PORT);

function returnKeyFromUser(id)
{
//text
var trovata = false;
var dati = JSON.parse(text);
for(var i=0; i<dati.friendlist.friend.length && trovata==false; i++)
{
var user = (dati.friendlist.friend[i].username).replace("\n","");
var userID = (id).replace("\n","");
if(user==userID)
{
trovata=true;
return ((dati.friendlist.friend[i].publicKey).toString()).replace("\n","");
}
}
if(trovata==false)
return null;
}

有一个小型 http 服务器接收 facebook 用户名,他要做的就是检索 2 个页面:

一个包含个人资料信息的 graphapi,以及一个包含 facebook 个人资料的提要信息的 graphapi我复制另外两个文件:

var https = require('https');

module.exports = function(path, callback) {
var options = {
host: 'graph.facebook.com',
port: 443,
path: (path.toString()).replace("\n",""),
method: 'GET'
};

var req = https.get(options, function(res) {

var pageData = "";

if((path.toString()).indexOf("/")==0 && (path.toString()).indexOf("/GET /`HTTP/")!=0)
//for load only (I hope facebook profile)

{

console.log(options);

res.setEncoding('utf8');

res.on('data', function (chunk) {
pageData += chunk;
});

res.on('end', function()
{

var fs = require('fs');
fs.writeFile("/tmp/profile", pageData, function(err) {
if(err) {
console.log(err);
} else {
console.log("The file was saved!");
}
});

//callback(pageData);
return;

});
}
});
};

3°锉刀

var https = require('https');

module.exports = function(path, callback) {
var options = {
host: 'graph.facebook.com',
port: 443,
path: (path.toString()).replace("\n",""),
method: 'GET'
};

var req = https.get(options, function(res) {

var pageData = "";

if((path.toString()).indexOf("/")==0 && (path.toString()).indexOf("/GET / HTTP/")!=0) //for load only (I hope facebook profile)
{

console.log(options);

res.setEncoding('utf8');

res.on('data', function (chunk) {
pageData += chunk;
});

res.on('end', function()
{

var fs = require('fs');
fs.appendFile('/tmp/profile', "***"+pageData, function (err) {
if (err) throw err;
console.log('It\'s saved!');

});
callback(pageData);
});
}
});
};

我不知道是否有办法调用第一个文件node.js中的两个文件,但我所做的是:(从node.js调用第一个文件,从第二个文件调用第三个文件)在 node.js 文件中,我使用以下命令调用第一个文件 loadFb.js:

loadFb(extendetPath, function(pageData) 
{

此调用将一个文件保存在我的 tmp 配置文件目录中,并在内部调用另一个附加一些文本的文件 loadFeed。

之后我必须将完整的信息发送给客户,但我有一个错误。为了让nodejs正确调用loadFb并编写tmp-配置文件,然后调用loadFeed但在附加信息之前, Node 仅向客户端回调我需要的一半信息。我不是一个好的nodejs程序员,这是我论文的一个工作。有人可以帮助我吗?

最佳答案

让我们看一下下面的代码:

  res.on('end', function()
{

var fs = require('fs');
fs.appendFile('/tmp/profile', "***"+pageData, function (err) {
if (err) throw err;
console.log('It\'s saved!');

});
callback(pageData);
});

它的作用是运行异步方法appendFile,然后立即调用callback。所以当执行回调中的代码时,文件还没有更新。您需要将 callback(pageData); 移至 appendFile 的回调。您需要检查代码并牢记这一点,因为我发现应该在另一个文件中进行相同的修复,因此也许也有一些类似的地方。

关于javascript - 使用 Node js从另一个文件调用两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19733157/

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