我有一个Node.js Angular应用程序,正在尝试将babylon.js导入到其中。
当前设置
1)npm install --save babylonjs
以将npm repo安装在我项目的 Node 模块中。
2)在我的角度组件中,我从上图中的babylon.module.d.ts
和babylon.max.js
文件导入BABYLON声明,如下所示。import * as BABYLON from 'babylon.js'
问题
没有包含任何扩展名。这些扩展名位于以下文件夹中
主要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>
文件中加载。使用导入时,仅在组件处于 Activity 状态时才查询资源。3)将
babylon.gui.d.ts
文件追加到babylon.module.d.ts
文件。 BABYLON.GUI`仍未定义。4)我与BABYLON开发人员here进行了交谈,我们有点死胡同了。
是否有人对如何正确导入此扩展名有任何意见?
PS。一旦得到答案,我将与开发人员合作,为希望将babylon.js纳入其项目的所有 Node 用户实现无缝体验!
最佳答案
我就此与首席开发人员deltakosh进行了交谈。
要清除一些事情:
如果有人对github上与该问题有关的公开问题感到好奇here is the link。
在过渡期间使用巴比伦的同时,正在为导入软件包提供导入支持,我做了以下工作:
对所有巴比伦库使用CDN
要消除 typescript 编译问题,请在
.ts
文件的顶部声明以下内容:declare let BABYLON: any;
,这将使带有包的Babylon可用,但是,在此期间,我们不会有任何打字方面的好处。如果您找到了一个更优雅的临时解决方案,请随时鸣叫!