Node.js v18.15.0使用fetch读取本地JSON文件报ERR_INVALID_URL错误
解决Node.js v18.15.0中fetch读取本地文件报ERR_INVALID_URL的问题
Node.js的fetchAPI沿用了浏览器的行为逻辑,仅支持HTTP/HTTPS协议的请求,无法直接识别本地文件路径(比如./localites.json这类相对路径),这就是触发ERR_INVALID_URL错误的原因。
以下是两种可行的解决方式:
使用file://协议访问本地文件
把本地路径转换为file://协议格式的URL,Node.js支持通过该协议读取本地文件:// 方式1:利用import.meta.url生成正确的file URL fetch(new URL('./localites.json', import.meta.url)) .then(response => response.json()) .then(data => console.log(data)) .catch(err => console.error(err));// 方式2:手动拼接file路径 fetch(`file://${process.cwd()}/localites.json`) .then(response => response.json()) .then(data => console.log(data)) .catch(err => console.error(err));使用Node.js内置fs模块读取文件
如果只是读取本地JSON文件,用Node.js原生的文件系统模块会更直接,推荐使用fs/promises的异步方法:import { readFile } from 'fs/promises'; readFile('./localites.json', 'utf8') .then(rawData => console.log(JSON.parse(rawData))) .catch(err => console.error(err));
内容的提问来源于stack exchange,提问作者Israel bogninou
相关产品推荐
相关产品推荐

