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

使用@onflow/cadence-parser遇Failed to parse URL错误,求解决方案

解决@onflow/cadence-parser的TypeError: Failed to parse URL from cadence-parser.wasm错误

我在项目中使用@onflow/cadence-parser包时遇到了标题中的错误,按照包README提供的示例代码运行后报错:

示例代码:

import { CadenceParser } from "@onflow/cadence-parser";

(async () => {
    const parser = await CadenceParser.create("cadence-parser.wasm");

    const ast = parser.parse(`
        pub contract HelloWorld {
            pub fun hello() {
                log("Hello, world!")
            }
        }
`);
})();

运行后抛出错误:

TypeError: Failed to parse URL from cadence-parser.wasm
    at Object.fetch (node:internal/deps/undici/undici:11600:11) {
  [cause]: TypeError [ERR_INVALID_URL]: Invalid URL
}

我曾尝试将cadence-parser.wasm文件从包目录复制到项目根目录,以为是路径问题,但问题依然存在。我的Node.js版本是v20.7.0。

可行解决方案

通过Node.js的fs模块读取wasm文件的二进制内容,再传入CadenceParser.create()方法即可解决问题,代码如下:

import { CadenceParser } from "@onflow/cadence-parser";
import * as fs from "fs"

(async () => {
    let file = fs.readFileSync('./cadence-parser.wasm');
    const parser = await CadenceParser.create(file);

    const ast = parser.parse(`
        pub contract HelloWorld {
            pub fun hello() {
                log("Hello, world!")
            }
        }
`);

    console.log({ast})
})();

原示例代码默认适配浏览器环境,通过fetch加载wasm文件;但在Node.js环境中,直接传入路径字符串会被fetch当作URL解析,导致无效URL错误。改用fs读取文件二进制内容传入,可避免URL解析、WebAssembly实例化类型不匹配等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:42:45