在节点中导入扩展模块

我有一个Node.js Angular应用程序,我试图导入babylon.js。

当前设置

1) npm install --save babylonjs以获取安装在我的项目节点模块中的npm repo。

下图显示了npm repo的文件夹结构。 在这里输入图像描述

2)在我的angular度组件中,我从babylon.module.d.tsbabylon.max.js文件中导入了BABYLON声明,如下babylon.module.d.ts

import * as BABYLON from 'babylon.js'

Babylonjs现在工作很好,有types启用和一切,所以我可以使用BABYLON如下图所示 在这里输入图像描述

问题

没有包含的扩展连接。 这些扩展名位于以下文件夹中

(完整的文件夹结构是在第一个图像。我离开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 }

尝试解决scheme

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。 这工作,但是,types将无法正常工作。 即使我的打字工作,使用CDN性能较差。 资源将被加载到每个页面的文档<head> 。 通过导入,仅当组件处于活动状态时才会查询资源。

3)将babylon.gui.d.ts文件附加到babylon.module.d.ts文件中。 BABYLON.GUI`尚未定义。

npm repo的修改是不受欢迎的,因为任何npm更新或安装都会覆盖更改。

4)我在这里和一个BABYLON的开发者交谈过 ,而且我们遇到了一个死胡同。

有没有人有任何关于如何正确导入此扩展的input?

PS。 一旦我们得到这个答案,我将与开发人员合作,为所有希望将babylon.jsjoin他们的项目的节点用户实施无缝的体验!

我跟主要开发商deltakosh谈到了这一点。

要清除一些事情:

  1. 这个问题不适用于npm
  2. 这个问题不是与节点
  3. 这个问题是如何巴比伦的结构
  4. 开发人员正在积极地重构以支持上述问题所需的导入行为。

如果有人对这个问题感兴趣,那么在这个问题上github上的开放问题的链接 。

在import软件包导入支持正在进行中的过程中使用巴比伦,我做了以下几点:

使用所有巴比伦图书馆的CDN

为了摆脱打字稿编辑问题,在.ts文件的顶部声明以下内容declare let BABYLON: any; 这将使巴比伦的包装可用,但是,我们在这期间没有任何types的好处。

如果您find了更优雅的临时解决scheme,随时欢迎您的join!