如何在模块中使用matter.js

问题描述 投票:0回答:2

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

import  "./matter.js";

我收到以下错误:

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

执行此操作的正确方法是什么?抱歉,如果这是一个新手问题。只是到处找不到答案。

module matter.js
2个回答
1
投票

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

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

而不是

})(this, function() {

然后就说

import './matter.js';

Matter.whatever;

似乎至少对我有用!


0
投票

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'
© www.soinside.com 2019 - 2024. All rights reserved.