我是Pixi.js的新手,但我过去有一些使用TypeScript的经验。我真的很难将Pixi.js导入到我的项目中。
我有一个使用Pixi和香草JavaScript的CDN导入运行的小Pixi.js项目,现在我正试图在TypeScript上运行相同的项目。我认为我的选择之一是使用Pixi的CDN导入,然后导入Pixi的类型定义,但我在几个地方读到Pixi的后期版本已经用TypeScript编写,所以我认为使用JavaScript版本的库,然后导入我自己的TypeScript定义对我来说不是一个好选择。
我尝试使用npm install pixi.js
,然后使用import * as PIXI from "pixi.js";
,但这会导致以下TypeScript错误:This module is declared with using 'export =', and can only be used with a default import when using the 'allowSyntheticDefaultImports' flag.
当我强迫它编译时,它也会给我这个浏览器错误:Uncaught TypeError: Failed to resolve module specifier "pixi.js". Relative references must start with either "/", "./", or "../".
这个错误对我来说很有意义,因为清楚地告诉浏览器查找pixi.js
将导致找不到任何文件,因为它是Node.js模块。
我尝试将CCD_ 6更改为CCD_;仅使用默认导入";错误,但这只是给了我一个"错误";pixi.js没有默认导出";错误,这似乎与我之前得到的错误形成了直接对比,说它只有有默认导出。。。
即使我设法消除了TypeScript错误,我仍然无法理解这将如何正常工作,因为浏览器不知道";pixi.js";是指浏览器中根本不存在的节点模块。。。
所有这些都让我想到了如何让Pixi.js程序使用TypeScript运行我查阅了很多次教程,但每一个都包括Webpack、Browserify等。我根本不想使用任何捆绑器/其他依赖项,我只想编写TypeScript代码,编译它,并让它给我一些.js文件,我可以直接将这些文件弹出到.html文件中并在浏览器中运行。这可能吗?
到目前为止,我的发现是,我所寻找的(不知何故(是不可能的。我发现我的选择要么是导入Pixi的香草JavaScript版本,然后不输入类型信息(并做一些巧妙的变通方法,让TypeScript不认为PIXI
是未定义的(,要么使用像Webpack这样的bundler。这两种都不理想,我不得不认为还有另一种选择。。。
这将取决于您的设置,但您可以尝试以下操作:
import { Sprite } from '@pixi/sprite';
new Sprite()
或者你可以尝试像这个一样以PIXI的形式导入所有
import * as PIXI from 'pixi.js';
new PIXI.Sprite()
你一定已经明白了,但我仍然希望这个答案在这里让其他人看到。
这是我在github上的演示项目,你可以克隆和使用。它安装了typescript和pixi.js。这个项目使用VITE而不是非常复杂的webpack。pxts:pixi.js设置库
必须记住的一些事情
- Pixi.js版本6捆绑了typescript类型
- 网上的大多数例子都是陈旧过时的
- 最新的pixi版本是v7.x,目前还没有社区支持
- 6.5.8版文档的链接
- 在使用6.x版本时,您必须单独安装Assets,因为在7.x版本中它是绑定的
- 旧的和过时的TUTORIALS在线是造成混乱的主要原因。请检查您已安装的版本