Hi,
I started using BabylonJS with Typescript and it works flawlessly - all definitions are correct and there're no problems when importing the main library. The problems occurs when I want to use use extensions library BabylonJS GUI. When installing it from NPM and importing it by:
import { AdvancedDynamicTexture, Button } from 'babylonjs-gui';
I'm getting following error:
File babylon.gui.d.ts is not a module
I see, that BabylonJS package and GUI extension differ a little bit - when investigating package.json file for both there're differences in typings property, which is babylon.module.d.ts for BabylonJS and babylon.gui.d.ts for GUI.
What is the correct way to import this extension using NPM package?
I'm using 3.1.0-alpha1 for BabylonJS and 3.1.0-alpha1.2 for GUI.
Best regards,
Kamil
Should be fixed with latest package in npm. do you mind giving it a try?
Hi, I updated extension to 3.1.0-alpha1.3 and yes, it fixes a not a module error but introduces another :(
First - it is installed in node_modules/babylonjs-gui but references typings from an invalid path:
/// <reference path="../../dist/preview release/babylon.d.ts" />
If I fix all references manually, I'll get following errors:
node_modules/babylonjs-gui/babylon.gui.module.d.ts(3,42): error TS2304: Cannot find name 'DynamicTexture'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(16,26): error TS2304: Cannot find name 'Layer'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(27,25): error TS2304: Cannot find name 'Layer'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(28,73): error TS2304: Cannot find name 'Scene'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(35,35): error TS2304: Cannot find name 'Scene'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(35,43): error TS2304: Cannot find name 'Viewport'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(40,28): error TS2304: Cannot find name 'AbstractMesh'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(42,36): error TS2304: Cannot find name 'AbstractMesh'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(43,79): error TS2304: Cannot find name 'Scene'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(70,60): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(153,22): error TS2304: Cannot find name 'AbstractMesh'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(168,34): error TS2304: Cannot find name 'Observable'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(168,45): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(173,33): error TS2304: Cannot find name 'Observable'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(178,34): error TS2304: Cannot find name 'Observable'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(178,45): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(183,32): error TS2304: Cannot find name 'Observable'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(183,43): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(188,35): error TS2304: Cannot find name 'Observable'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(193,28): error TS2304: Cannot find name 'Observable'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(223,48): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(223,58): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(224,53): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(224,70): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(225,33): error TS2304: Cannot find name 'Vector3'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(225,49): error TS2304: Cannot find name 'Scene'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(226,28): error TS2304: Cannot find name 'AbstractMesh'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(227,53): error TS2304: Cannot find name 'Vector3'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(243,47): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(246,47): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(247,45): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(379,53): error TS2304: Cannot find name 'Vector3'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(395,35): error TS2304: Cannot find name 'Observable'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(408,47): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(409,47): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(410,45): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(424,39): error TS2304: Cannot find name 'Observable'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(431,47): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(446,39): error TS2304: Cannot find name 'Observable'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(453,47): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(536,47): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(537,45): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(560,35): error TS2304: Cannot find name 'Observable'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(560,46): error TS2304: Cannot find name 'Color3'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(561,16): error TS2304: Cannot find name 'Color3'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(578,47): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(579,47): error TS2304: Cannot find name 'Vector2'.
node_modules/babylonjs-gui/babylon.gui.module.d.ts(580,45): error TS2304: Cannot find name 'Vector2'.
When I try to import all missing types:
import { DynamicTexture, Layer, Scene, AbstractMesh, Vector2, Viewport, Observable, Vector3, Color3 } from 'babylonjs';
Application compiles but I'm getting runtime error:
Uncaught TypeError: Object prototype may only be an Object or null: undefined
at setPrototypeOf (<anonymous>)
at __extends (C:\OSS\Nebula\node_modules\babylonjs-gui\babylon.gui.js:7)
at C:\OSS\Nebula\node_modules\babylonjs-gui\babylon.gui.js:17
at BABYLON.GUI.BABYLON.GUI (C:\OSS\Nebula\node_modules\babylonjs-gui\babylon.gui.js:346)
at BABYLON (C:\OSS\Nebula\node_modules\babylonjs-gui\babylon.gui.js:348)
at Object.<anonymous> (C:\OSS\Nebula\node_modules\babylonjs-gui\babylon.gui.js:349)
at Object.<anonymous> (C:\OSS\Nebula\node_modules\babylonjs-gui\babylon.gui.js:3789)
at Module._compile (module.js:571)
at Object.Module._extensions..js (module.js:580)
at Module.load (module.js:488)
Can you try to add an import Babylon at the beginning of the module file?
This is what I did here:
import { DynamicTexture, Layer, Scene, AbstractMesh, Vector2, Viewport, Observable, Vector3, Color3 } from 'babylonjs';
or maybe you mean a different method?
We are working on a fix:)
Cool, can't wait!
This will be wonderful to have!
@deltakosh Not to sound demanding, but is there any update on the fix to enable importing the babylonjs-gui module? Thanks for your work on this.
Current ETA: end of next week :D
@deltakosh sounds great...thanks!
Most helpful comment
We are working on a fix:)