在节点中导入扩展模块
我有一个Node.js Angular应用程序,我试图导入babylon.js。
当前设置
1) npm install --save babylonjs
以获取安装在我的项目节点模块中的npm repo。
下图显示了npm repo的文件夹结构。
2)在我的angular度组件中,我从babylon.module.d.ts
和babylon.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谈到了这一点。
要清除一些事情:
- 这个问题不适用于npm
- 这个问题不是与节点
- 这个问题是如何巴比伦的结构
- 开发人员正在积极地重构以支持上述问题所需的导入行为。
如果有人对这个问题感兴趣,那么在这个问题上github上的开放问题的链接 。
在import软件包导入支持正在进行中的过程中使用巴比伦,我做了以下几点:
使用所有巴比伦图书馆的CDN
为了摆脱打字稿编辑问题,在.ts
文件的顶部声明以下内容declare let BABYLON: any;
这将使巴比伦的包装可用,但是,我们在这期间没有任何types的好处。
如果您find了更优雅的临时解决scheme,随时欢迎您的join!
- javascript:ReferenceError:导出未定义
- Webstorm导入Angular 2的url问题
- 在typescript(angular2)应用程序中joinnode_module
- 当你在Javascript中“从someModule导入someModuleName”会发生什么?
- Babel ES6:导入节点模块也需要在ES6中进行转换
- 为什么Visual Studio代码添加导致我的nodejs程序中断的import语句?
- 使用cbdocloader将JSON文件导入到Couchbase
- 如何解决require(“../../../../../../../”)挫折在NodeJS中?
- 如何导入一个Typescript 1.0函数,如node.js require和arguments?