在TypeScript项目中导入matter-js

8

我找到了这个文件:

https://www.npmjs.com/package/@types/matter-js

我执行了这个命令:

npm install --save @types/matter-js

在根ts文件中,我收到了错误信息:

'Matter'指的是UMD全局变量,但当前文件是模块。考虑添加一条import语句。

代码看起来像这样:

///<reference path="matter-js.d.ts"/>

import Ioc from "./libs/ioc";
let master = new Ioc();
console.log(master);
console.log(Matter);

浏览器错误:

app.ts:11 未捕获的引用错误:Matter未定义

我需要加载matter-js.js库吗?

如果我放置:

import matter from 'matter-js'

我得到的翻译是:

模块“matter-js”没有默认导出。

5个回答

9
您可以尝试使用 import * as matter from 'matter-js' 加载它,那应该可以工作。

1
我删除了这行代码 ///<reference path="matter-js.d.ts"/> ,现在完全不需要了。 - Nikola Lukic

4
您可以进行以下操作。
var Matter = require('matter-js');

或者

import { Engine, World, Body, Bodies, Constraint } from 'matter-js';

@types/matter-js缺少Common类,但也许你不应该使用它。如果你真的需要它,你可以将以下内容添加到包中的index.d.ts文件中:

export class Common {
    static extend(obj:any, deep?:boolean): any;
    static clone(obj:any, deep?:boolean): any;
    static keys(obj:any): any;
    static values(obj:any): any;
    static get(obj:any, path:string, begin:number, end:number): any;
    static set(obj:any, path:string, val:any, begin:number, end:number): any;
    static shuffle(array:any[]): any;
    static choose(choices:any[]): any;
    static isElement(obj:any):boolean;
    static isArray(obj:any):boolean;
    static isFunction(obj:any):boolean;
    static isPlainObject(obj:any):boolean;
    static isString(obj:any):boolean;
    static clamp(value:number, min:number, max:number):number;
    static sign(value:number): number;   
    static now(): number;
    static random(min?:number, max?:number): number;
    static colorToNumber(colorString:string): number;
    static log(...objs:any[]): void;
    static info(...objs:any[]): void;
    static warn(...objs:any[]): void;
}

3

很不幸,typescript库似乎已经过时了。最后一次提交是2年前。在typescript定义中,应该是可选的参数却变成了必需的...


2
我使用script标签加载matter.js库。你忘记了吗?
<script src="js/matter.min.js"></script>

我使用以下命令安装了类型定义:

npm install @types/matter-js

这是正确的,但如果我已经使用了ts、webpack,我想要基于依赖关系从src/获取所有应用程序文件到build/。 - Nikola Lukic
只需安装类型 npm i @types/matter-js -D - Derk Jan Speelman

0

在我导入matterjs时遇到了错误,直到我删除了node_modules并重新运行npm install。然后问题就解决了。最终得到以下结果:

import * as Matter from 'matter-js';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接