如何使用Node.js读取外部文本文件?

时间:2019-09-18 16:58:21

标签: javascript node.js

因此,我正在尝试读取外部(例如来自其他域的)文本文件,但是我尝试过的任何方法都没有用。
通常会发生的响应是undefined,或者根本没有响应。
这是我尝试过的一件事:

// package xmlhttprequest is installed
// this was copy-pasted from some other stackoverflow question
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var txtFile = new XMLHttpRequest();

txtFile.open("GET", "https://snappeathing282346239557829348747259837723489.000webhostapp.com/pin.txt", true);
txtFile.onreadystatechange = function() {
  if (txtFile.readyState === 4) {  // Makes sure the document is ready to parse.
    if (txtFile.status === 200) {  // Makes sure it's found the file.
      allText = txtFile.responseText; 
      lines = txtFile.responseText.split("\n"); // Will separate each line into an array
    }
  }
}
console.log(txtFile.send(null)) // Logs response to console

作为响应,我得到的是undefined,如何记录而不是undefined的123(txt文件包含的是123)?

2 个答案:

答案 0 :(得分:0)

感谢@DaveNewton和@esqew建议使用fetch api /程序包。
代码如下:

var fetchUrl = require("fetch").fetchUrl;
fetchUrl("http://snappeathing282346239557829348747259837723489.000webhostapp.com/pin.txt", function(error, meta, body){
    console.log(body.toString());
});

它将日志123记录到控制台

答案 1 :(得分:0)

例如尝试节点获取

const fetch = require('node-fetch');
fetch('https://snappeathing282346239557829348747259837723489.000webhostapp.com/pin.txt')
  .then(res => res.text())
  .then(content => console.log(content))
  .catch(err => console.error(err));