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

如何在模块化项目中正确使用matter.js 解决导入报错问题

matter.js 模块化项目正确引入方案

报错原因

直接导入的是matter.js的UMD通用版本,该版本默认会尝试将Matter对象挂载到全局window对象,而webpack等模块化构建工具处理UMD格式文件时,没有正确接收导出就会触发上下文undefined的报错。

推荐引入方式(npm包管理)

这是模块化项目最稳定的接入方式:

  • 第一步:安装依赖
    执行命令:
    npm install matter-js
  • 第二步:导入使用
    可以全量导入整个Matter对象:
    import Matter from 'matter-js'
    也可以按需导入需要的模块,减小打包体积:
    import { Engine, Render, Bodies, World } from 'matter-js'
  • 最小可用示例:
import { Engine, Render, Bodies, World } from 'matter-js'

// 创建物理引擎
const engine = Engine.create()
// 创建渲染器
const render = Render.create({
  element: document.body,
  engine: engine
})
// 创建80*80的矩形物体
const box = Bodies.rectangle(400, 200, 80, 80)
// 把物体添加到物理世界
World.add(engine.world, box)
// 运行引擎和渲染器
Engine.run(engine)
Render.run(render)

本地文件引入方案(无需npm安装)

如果需要使用本地下载的matter.js文件,可使用以下两种方案处理:

  • 方案1:全局引入
    将matter.js放到项目的public静态资源目录,在入口html文件中添加script标签引入:
    <script src="/matter.js"></script>
    引入后Matter会自动挂载到全局window对象,项目中直接使用window.Matter即可,无需额外import语句。
  • 方案2:模块化导入本地文件
    优先下载matter.js的ESM版本文件,导入语句改为:
    import * as Matter from './matter.js'
    如果使用的是UMD版本仍然报错,可以在导入前手动补全全局上下文:
window.Matter = window.Matter || {}
import './matter.js'
const Matter = window.Matter

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:27:01