在节点

时间:2017-07-21 00:34:47

标签: node.js typescript npm import babylonjs

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

当前设置

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

  

下图描绘了npm repo的文件夹结构。   enter image description here

2)在我的角度组件中,我从上面图片中的babylon.module.d.tsbabylon.max.js文件中导入BABYLON声明。

import * as BABYLON from 'babylon.js'

  

Babylonjs现在效果很好,启用了打字和一切,所以我   可以使用BABYLON,如下图所示   enter image description here

问题

所有附加的扩展都没有被连接起来。这些扩展名位于以下文件夹

  

(完整文件夹结构位于第一张图片中。我将gui文件夹保持打开状态,因为这是我正在尝试激活的特定扩展名)

     

enter image description here

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合并到他们的项目中的所有节点用户实现无缝体验!

1 个答案:

答案 0 :(得分:0)

我与首席开发人员deltakosh谈到了这一点。

清除一些事项:

  1. 此问题不适用于npm
  2. 此问题不适用于节点
  3. 这个问题与巴比伦的结构有关
  4. 开发人员正在积极重构以支持上述问题中所需的导入行为。
  5. 如果有人对github上关于这个问题的公开问题感到好奇here is the link

    在临时使用Babylon的同时正在处理导入包的导入支持,我已经完成了以下工作:

    将CDN用于所有巴比伦图书馆

    要摆脱打字稿编译问题,请在.ts文件declare let BABYLON: any;的顶部声明以下内容:这将使babylon包装可用,但是,我们在此期间不会有任何打字优惠。

    如果您找到了更优雅的临时解决方案,请随意加入!