You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过fetch/axios等网络API读取本地文件(不使用fs模块)

问题描述

出于学习需求,我需要使用fetch、axios这类network APIs获取本地文件,且不能使用fs模块或导入该模块。我尝试了fetch和axios,但二者均未实现读取本地文件的功能(推测是出于安全性考虑)。

尝试的Fetch代码

return new Promise((resolve, reject) => {
    fetch('file://users.js')
    .then(data => {
        console.log(data);
        resolve(data);
    })
    .catch(error => {
        console.error('Errore durante il recupero del file:', error);
        reject(error);
    });
});

报错信息

cause: Error: not implemented... yet...

尝试的Axios代码

return new Promise((resolve, reject) => {
        axios.get('file://users.js')
        .then(response => {
            console.log(response.data);
            resolve(response.data);
        })
        .catch(error => {
            console.error('Errore durante il recupero del file:', error);
            reject(error);
        });
    });

报错信息

generatedMessage: false,
code: 'ERR_ASSERTION',
actual: 'file:',
expected: 'http:',
operator: '=='

请问是否有其他网络API可以实现该需求?


解决方案

所有标准网络API(包括fetch、axios)都不支持直接读取本地file://协议的文件,核心原因就是安全限制:浏览器沙箱禁止网络请求访问本地文件系统;Node.js的网络API实现也默认只处理HTTP/HTTPS等网络协议,不兼容file://。

如果不能使用fs模块,可通过以下方式实现需求:

  • 启动本地HTTP服务:用Python的python -m http.server、Node.js内置http模块或第三方工具(如http-server)将本地文件目录作为静态资源暴露,之后用fetch/axios请求http://localhost:端口号/users.js,这就符合网络API的协议要求了。
  • 浏览器环境下的替代方案:通过<input type="file">让用户手动选择文件,再用FileReader API读取内容——这不属于网络API,但能满足“不使用fs读取本地文件”的学习需求。

不存在能绕过安全限制直接读取file://文件的标准网络API,这是由网络API的设计逻辑和安全规范决定的。


内容的提问来源于stack exchange,提问作者allexj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 05:12:27