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

在Fabric.js中调用库时遭遇jsdom.JSDOM构造函数错误求助

解决Fabric.js中jsdom.JSDOM is not a constructor报错问题

报错详情

fabric.js:25 Uncaught TypeError: jsdom.JSDOM is not a constructor
at node_modules/fabric/dist/fabric.js (fabric.js:25:23)
该错误会导致应用内画布无法正常加载,且已安装与Fabric.js内部依赖版本一致的jsdom 19。


解决方案

  • 修正jsdom导入方式
    Fabric.js v5+对jsdom导入有明确要求,Node.js环境中,jsdom v19+需要解构导入构造函数:
// 正确写法
const { JSDOM } = require('jsdom');

如果仍用const jsdom = require('jsdom');再取jsdom.JSDOM,会导致Fabric.js找不到正确的构造函数。

  • 严格匹配依赖版本
    核对Fabric.js package.json中jsdom的依赖范围(比如是^19.0.0还是~19.xx.xx),确保本地安装的jsdom版本完全落在这个范围内,避免小版本差异引发的兼容问题。

  • 清理依赖缓存重装
    缓存异常可能导致依赖加载错乱,执行以下命令重置依赖:

rm -rf node_modules package-lock.json
npm install
  • 检查构建工具配置
    如果用Webpack、Vite等构建工具,确认配置没有错误处理jsdom的导入。比如Webpack的resolve规则是否正确解析jsdom模块,避免tree-shaking误删必要导出。

  • 手动注入DOM环境
    若以上方法无效,手动为Fabric.js指定DOM环境后再导入:

const { JSDOM } = require('jsdom');
const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>');
global.window = dom.window;
global.document = dom.window.document;
global.navigator = dom.window.navigator;

// 导入Fabric.js
const fabric = require('fabric');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:12:34