Sea*_*nMC 2 javascript typescript babylonjs stenciljs
我在 StencilJS 应用程序中使用 BabylonJS,而且我似乎只能以非常特定的方式导入。
例如我不能这样做:
import { Engine, Scene } from "babylonjs";
Run Code Online (Sandbox Code Playgroud)
它说'Engine' is not exported by node_modules\babylonjs\babylon.js
但它是..
我可以:
import BABYLON from 'babylonjs';
Run Code Online (Sandbox Code Playgroud)
并像使用它一样
private _scene: BABYLON.Scene;
Run Code Online (Sandbox Code Playgroud)
我想让前者工作。有什么建议吗?
第一种方法是大多数教程是如何做到的,我拒绝相信 SencilJS 没有能力做到这一点。我肯定错过了什么
BabylonJS提供两个版本(ES5和ES6)。您所指的问题与软件包的 ES5 版本有关。
如果你在你的代码中这样做
import * as babylon from 'babylonjs';
console.log(babylon);
Run Code Online (Sandbox Code Playgroud)
并查看控制台,您将看到以下内容:
{default: Module, __moduleExports: Module, babylonjs: undefined}
这就是分解不起作用的原因,它不是一个可以按您期望的方式序列化的对象。
在文档中他们说
从'babylonjs'导入{引擎,场景};
注意:如果您无法使用此导入方法,请转到下面有关 typescript 和 webpack 的部分。
但是,我未能使其适用于 ES5 版本。对我来说,正确的方法是使用 ES6 版本的包,它可以安装为
npm install -S @babylonjs/core
Run Code Online (Sandbox Code Playgroud)
此版本允许您将 ES6 包与摇树和其他有用功能一起使用。
在这种情况下,您的模块导入将完全如您所愿:
import {Engine, HemisphericLight, Mesh, Scene} from '@babylonjs/core';
Run Code Online (Sandbox Code Playgroud)
这是我为证明我的话而做的一个小例子。
请告诉我,如果我误会了您并且您希望有所不同,或者您需要一些额外的解释或材料 - 我很乐意提供帮助。
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |