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

JS读取本地JSON文件报错ReferenceError: getFile is not defined

报错原因定位

你遇到的报错和路径问题无关,核心问题有两个:

  1. 不存在getFile这个内置方法:不管是浏览器原生JS还是Node.js默认环境,都没有提供全局的getFile函数,直接调用未定义的函数就会抛出Reference error : getFile is not defined错误,报错参考:
    getFile未定义报错截图
  2. 原路径写法存在隐患:就算补全了文件读取方法,你写的"..\UniSwap2\Uniswap_Surface_Rates.json"也无法正确定位文件:
    • JS字符串中单反斜杠\是转义字符,直接书写不会被识别为路径分隔符
    • 相对路径层级逻辑虽然正确,但转义问题会导致路径解析完全失效

根据你给出的文件路径:

  • 脚本位置:F:\Downloads\Triangular Arbitrage\RESOURCES\Uniswap2JS\main.js
  • 目标JSON位置:F:\Downloads\Triangular Arbitrage\RESOURCES\UniSwap2\Uniswap_Surface_Rates.json
    两个文件同属RESOURCES目录下的不同子文件夹,从main.js出发需要先返回上一级到RESOURCES目录,再进入UniSwap2文件夹即可找到目标JSON,正确相对路径为../UniSwap2/Uniswap_Surface_Rates.json(统一使用正斜杠,无需转义,Node.js和浏览器都能识别)。
正确读取本地JSON方案(Node.js环境)

从你的文件路径判断你是在Node.js环境跑脚本,读取本地文件需要用Node内置的fs模块,配合你已经写的async/await语法即可实现,推荐用path模块拼接路径,彻底避免相对路径计算错误(比如从其他目录启动脚本时相对路径失效的问题),完整可运行代码如下:

// 引入Node.js内置模块
const fs = require('fs/promises'); // 基于Promise的文件系统API,适配async写法
const path = require('path'); // 路径处理工具,屏蔽跨平台路径差异

// GET DEPTH //////////////////
async function getDepth(amountIn, limit) {
    console.log("Reading Surface Rate Information...")
    // 拼接绝对路径:__dirname是当前脚本所在目录的绝对路径,拼接后不受启动位置影响
    const targetPath = path.resolve(__dirname, "../UniSwap2/Uniswap_Surface_Rates.json");
    // 异步读取文件,指定utf8编码直接获取字符串内容
    const fileContent = await fs.readFile(targetPath, 'utf8');
    // 解析JSON
    const fileJsonArray = JSON.parse(fileContent);
    const fileJsonArrayLimit = fileJsonArray.slice(0, limit);
    console.log(fileJsonArrayLimit);
    
    return fileJsonArrayLimit;
}

// 调用异步函数需捕获异常,方便排查错误
getDepth(1, 2).catch(err => {
    console.error("读取文件失败:", err);
});
其他注意事项
  • 如果你是在浏览器环境运行这段代码,无法直接通过路径读取本地磁盘文件,这是浏览器的安全沙箱限制,需要把JSON文件放到web服务的静态资源目录下,通过fetch接口请求,或者通过<input type="file">组件让用户手动选择文件后读取。
  • 如果一定要用Windows风格的反斜杠写路径,需要对反斜杠做转义,写法为"..\\UniSwap2\\Uniswap_Surface_Rates.json",但不推荐这种写法,跨平台运行容易出问题。
  • 原代码中fileJsonArray、fileJsonArrayLimit变量没有加let/const声明,会成为隐式全局变量,容易引发隐蔽bug,所有变量都要显式声明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:06:04