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

JS/TS CLI转Chrome扩展报Uncaught (in promise) TypeError: adapter is not a function

错误原因及解决方案

根因

你使用的trading-view-recommends-parser-nodejs是Node.js环境专用库,底层依赖Axios发送网络请求,库内置默认绑定了Node.js专属的http/https模块作为请求适配器。Chrome扩展运行在浏览器环境,没有Node.js内置核心模块,所以库调用时找不到对应的adapter函数抛出错误。

可行解决方案

  • 方案1:替换兼容浏览器的实现
    直接放弃Node.js专用的该依赖,自己封装TradingView公开接口请求逻辑,Chrome扩展环境直接用原生fetch发送请求、解析返回结果即可,无需额外依赖,同时可以规避跨域、适配等问题。

  • 方案2:手动配置Axios浏览器适配器
    如果必须保留该依赖,可手动给Axios配置适配浏览器环境的请求适配器:

    1. 安装适配fetch的Axios适配器:npm i @vespaiach/axios-fetch-adapter
    2. 在初始化TradingViewScan实例前添加全局配置代码:
    import axios from 'axios'
    import fetchAdapter from '@vespaiach/axios-fetch-adapter'
    
    axios.defaults.adapter = fetchAdapter
    

    该方案适配Chrome扩展Manifest V3的service worker环境,因为Manifest V3的后台运行环境仅支持fetch,不支持XMLHttpRequest。

  • 方案3:后端中转请求
    将TradingView接口请求逻辑迁移到自己的后端服务,Chrome扩展仅调用后端封装好的接口,既可以规避浏览器环境的库适配问题,也可以解决TradingView接口的跨域限制。

额外注意事项

  • 若使用Manifest V3,需要在manifest.json的host_permissions字段中添加TradingView相关域名的访问权限,否则请求会被浏览器拦截。
  • 不要在content script中直接发送跨域请求,统一放到background service worker中处理,避免跨域报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:45:03