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

MacOS下ClojureScript集成js-pytorch失败,求解决调用报错问题

js-pytorch与ClojureScript集成问题解决方案

可能的问题根源及修复步骤

1. 依赖导入方式错误

ClojureScript导入npm包需使用ES模块语法,确保正确引用js-pytorch的默认导出对象:

(ns your.app.namespace
  (:require ["js-pytorch" :as torch])) ; 正确的导入方式

避免使用错误的命名空间导入(如:require [js-pytorch.core :as torch]),这会导致无法识别模块导出。

2. Shadow-CLJS未配置Bun作为包管理器

Shadow-CLJS默认使用npm/yarn,需显式指定使用Bun处理依赖,避免兼容性问题:
修改shadow-cljs.edn添加Bun配置:

{:deps true
 :npm {:package-manager :bun} ; 关键配置:指定Bun为包管理器
 :builds {:app {:target :browser
                :output-dir "public/js"
                :asset-path "/js"
                :modules {:main {:init-fn your.app.namespace/main}}
                :devtools {:repl true}}}}

3. 依赖安装不完整或损坏

删除现有node_modules和bun.lockb,重新执行:

bun install

确保js-pytorch被正确安装到依赖目录。

4. REPL执行时机过早

浏览器环境下模块异步加载,直接在REPL启动后调用torch/randn会因模块未加载完成报错。可通过以下方式规避:

  • 先执行初始化函数触发模块加载:
    (defn main []
      (let [tensor (torch/randn (clj->js [2 3]))]
        (println "Tensor:" (.toString tensor))))
    
    (main) ; 调用初始化函数加载模块
    
  • 或在REPL中手动完成模块加载后执行:
    (require ["js-pytorch" :as torch])
    (torch/randn (clj->js [2 3]))
    

5. 环境兼容性验证

先在Bun原生REPL中验证js-pytorch可用性,排除包本身问题:

bun repl

在Bun REPL中执行:

const torch = require('js-pytorch');
console.log(torch.randn([2, 3]));

若此处正常输出张量,则问题出在ClojureScript集成环节。

完整配置文件示例

deps.edn

{:deps {org.clojure/clojurescript {:mvn/version "1.11.60"}
        thheller/shadow-cljs {:mvn/version "2.26.2"}}}

package.json

{
  "dependencies": {
    "js-pytorch": "^0.1.12"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:43:27