Node.js readFileSync未将URL作为文件读取

Node.js readFileSync未将URL作为文件读取,node.js,Node.js,使用和如指南中所示: const fs = require('fs'); let myURL = new URL('/ns/oa', 'https://www.w3.org/'); let contents = fs.readFileSync(myURL).toString(); console.log(contents) 错误:错误\u无效\u URL\u方案 注意:对读者来说是类似的好线索(!),但这并不是我问题的解决方案,只是将URL用作“真正的URL”(而不是将概念折叠为文件/)。只

使用和如指南中所示:

const fs = require('fs');
let myURL = new URL('/ns/oa', 'https://www.w3.org/');
let contents = fs.readFileSync(myURL).toString();
console.log(contents)
错误:错误\u无效\u URL\u方案


注意:对读者来说是类似的好线索(!),但这并不是我问题的解决方案,只是将URL用作“真正的URL”(而不是将概念折叠为
文件/
)。

只是引用:注意粗体中的引号

URL对象支持 新增版本:v7.6.0

对于大多数fs模块函数,path或filename参数可以作为WHATWG URL对象传递仅支持使用文件:协议的URL对象。

简单地说,
https:
协议不受支持

例如

const fs = require('fs');
const fileUrl = new URL('file:///tmp/hello');

fs.readFileSync(fileUrl);
fs.readFile(Sync)
以及所有其他
fs
api只处理本地文件

URL
api可以使用
file://
协议接受本地文件,这就是在
fs.readFile
中使用
URL
的意义

如果您需要从web获取文件,则需要使用http/httpsapi,特别是
request
或类似工具来读取所需文件/url的内容。大致是这样的:

const https = require('https');
let myURL = new URL('/ns/oa', 'https://www.w3.org/');
let body = [];
https.request(myURL, res=>{
  // XXX verify HTTP 200 response
  res.on('data', chunk=>body.push(chunk));
  res.on('end', ()=>console.log(Buffer.concat(body).toString()));
}).end()

可能是@Mureinik的复制品,嗯。。。不,它不是复制品。。。我需要
readFileSync
和最简单的同步使用,就像PHP的file\u get\u contents.oops一样,好吧。。。嗯,这是一个“错误的URL”(!!)。。。NodeJs没有简单的
文件\u get\u contents()
等价物。这个等价物就是上面链接中的那个。您好,似乎是个不错的解决方案,但不起作用,“错误:找不到模块‘请求’”。。。哼似乎它不是一个“本机解决方案”,生成依赖项,并且代码不那么可靠。你能引用模块引用吗?好了(),请求是本机http上的一个包装器。请求具有更多功能,我将把答案改为使用本机requestHi,谢谢(!)。有许多非本机软件,最流行的软件似乎是request和axios。。。您可以保留(添加)建议及其源代码,没有问题。我投了赞成票,但我不能点击“接受答案”(作为主要答案),因为第一个答案也是正确的。。。但你的答案也是很好的(!)。np,我还不太习惯在SO上活动(所以写答案需要很长时间)