我有一个Node.js Angular应用程序,我试图将babylon.js导入。
1)npm install --save babylonjs
在项目的节点模块中安装npm repo。
2)在我的角度组件中,我从上面图片中的babylon.module.d.ts
和babylon.max.js
文件中导入BABYLON声明。
import * as BABYLON from 'babylon.js'
所有附加的扩展都没有被连接起来。这些扩展名位于以下文件夹
中(完整文件夹结构位于第一张图片中。我将gui文件夹保持打开状态,因为这是我正在尝试激活的特定扩展名)
主babylon.module.d.ts
文件定义BABYLON如下:
declare module BABYLON { //class types are defined in here }
gui扩展(所有其他遵循相同的逻辑)声明自己是BABYLON的一部分,如下所示:
declare module BABYLON.GUI { //extend classes & create new classes in here in here }
1)babylon.gui.d.ts声明BABYLON.GUI
所以我只是尝试了以下
import * as BABYLON from 'babylonjs';
import * as BABYLON.GUI from 'babylonjs/dist/preview release/gui/babylon.gui';
这会生成以下的Typescript错误:Duplicate identifier 'BABYLON'
,这并不奇怪,但是,BABYLON.GUI is how the
babylon.gui.d.ts`文件声明了它的部分。
2)在index.html文件中使用CDN。但是,这种方法不起作用。即使我得到打字工作,使用CDN的性能也不太好。资源将在每个页面的<head>
文档中加载。使用导入时,只有在组件处于活动状态时才会查询资源。
3)将babylon.gui.d.ts
文件附加到babylon.module.d.ts
文件。 BABYLON.GUI`仍未定义。
无论如何都要修改npm repo,因为任何npm更新或安装都会覆盖更改。
4)我与一位BABYLON开发人员here进行了交谈,我们走到了尽头。
有没有人对如何正确导入此扩展程序有任何意见?
PS。一旦我们得到了答案,我将与开发人员合作,为希望将babylon.js合并到他们的项目中的所有节点用户实现无缝体验!
答案 0 :(得分:0)
我与首席开发人员deltakosh谈到了这一点。
清除一些事项:
如果有人对github上关于这个问题的公开问题感到好奇here is the link。
在临时使用Babylon的同时正在处理导入包的导入支持,我已经完成了以下工作:
将CDN用于所有巴比伦图书馆
要摆脱打字稿编译问题,请在.ts
文件declare let BABYLON: any;
的顶部声明以下内容:这将使babylon包装可用,但是,我们在此期间不会有任何打字优惠。
如果您找到了更优雅的临时解决方案,请随意加入!