我有一个Node.js Angular应用程序,正在尝试将babylon.js导入到其中。

当前设置

1)npm install --save babylonjs以将npm repo安装在我项目的 Node 模块中。



2)在我的角度组件中,我从上图中的babylon.module.d.tsbabylon.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进行了交谈。

要清除一些事情:

  • 此问题与npm无关
  • 此问题与 Node
  • 无关
  • 这个问题与巴比伦的结构有关
  • 开发人员正在积极进行重构,以支持上述问题中所需的导入行为。

  • 如果有人对github上与该问题有关的公开问题感到好奇here is the link

    在过渡期间使用巴比伦的同时,正在为导入软件包提供导入支持,我做了以下工作:

    对所有巴比伦库使用CDN

    要消除 typescript 编译问题,请在.ts文件的顶部声明以下内容:declare let BABYLON: any;,这将使带有包的Babylon可用,但是,在此期间,我们不会有任何打字方面的好处。

    如果您找到了一个更优雅的临时解决方案,请随时鸣叫!

    10-05 20:52