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

如何在SvelteKit中使用yahoo-finance模块并解决util.inherits报错

问题原因

你遇到的报错是运行环境不兼容导致的。yahoo-finance 是专为 Node.js 环境设计的第三方库,依赖 Node.js 内置的 util、http 等核心模块,你直接在浏览器侧运行的前端 Svelte 组件中导入该库,浏览器环境并没有这些 Node.js 原生 API 的实现,自然会抛出 util.inherits is not a function 类的错误,和你使用 require 还是 import 语法无关。

解决方案

利用 SvelteKit 自带的服务端 API 路由能力,把调用 yahoo-finance 的逻辑放到服务端执行,前端只需要调用自己写的服务端接口获取数据即可。

步骤1:新建服务端API路由

在你的 SvelteKit 项目下创建文件 src/routes/api/yahoo-quote/+server.js,写入如下代码:

import YahooFinance from "yahoo-finance";
import { json } from '@sveltejs/kit';

export async function GET() {
  const result = await YahooFinance.quote({
    symbol: 'AAPL',
    modules: [ 'price', 'summaryDetail' ]
  });
  return json(result);
}

如果需要支持自定义查询参数,你可以解析请求携带的参数,动态传入 YahooFinance.quote 方法中。

步骤2:修改前端组件代码

删掉前端组件中直接导入 yahoo-finance 的逻辑,改为调用刚创建的服务端接口:

<script>
    let text = "";
    const testQuote = async () => {
        const res = await fetch('/api/yahoo-quote');
        const result = await res.json();
        text = JSON.stringify(result, null, 2);
    }
</script>
<button on:click={testQuote}>发起请求</button>
<p>{text}</p>

这样所有调用 yahoo-finance 的逻辑都会在 SvelteKit 的 Node.js 服务端执行,不会触发浏览器环境缺少 Node.js 核心模块的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:24:06