开发者问题收集

如何在模块中使用 matter.js

2021-08-18
536

这是一个初学者问题。我需要将 matter.js 实现到模块内构建的项目中。当我尝试像这样的简单导入时:

import  "./matter.js";

我收到以下错误:

Uncaught TypeError: Cannot set property 'Matter' of undefined
    at webpackUniversalModuleDefinition (VM609 matter.js:36)
    at VM609 matter.js:37

正确的做法是什么?抱歉,这是一个新手问题。只是在任何地方都找不到答案。

2个回答

将 matter.js 文件中的第 37 行替换为

})(this || window, function() {

而不是

})(this, function() {

然后输入

import './matter.js';

Matter.whatever;

至少对我来说有效!

Joseph Coppin
2021-09-01

ESM 构建

虽然 Joseph Coppin 的答案 有效,但我发现它很令人沮丧,因为它会污染浏览器 window 并在升级时需要手动编辑。

幸运的是,经过一番搜索,我发现 Matter.JS 现在有一个真正的 ESM 构建,您可以通过切换 jsDelivr 来选择它!

import Matter from 'https://cdn.jsdelivr.net/npm/[email protected]/+esm'

这很好用,我只需下载文件并将其放在我的项目目录中即可。这样,它甚至可以在本地托管,例如。

import Matter from './matter.esm.js'
oelna
2024-07-08