0

我正在尝试制作一个需要 3d 渲染引擎的单页网站。但我不断收到错误:

The requested module '/Babylon.js-master/dist/babylon.js' does not provide an export named 'Engine'

HTML

<!DOCTYPE html>
<html lang="en">

 <head>
<title>Gcode Designer</title>
<link href="stylesheet.css" rel="stylesheet">
<script src="Main.js"> </script>
<style type="text/css" media="screen">
 
</style>
<script src="plotly-2.1.0.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://cdn.babylonjs.com/babylon.js"></script>
<script src="https://cdn.babylonjs.com/loaders/babylonjs.loaders.min.js"></script>
</head>

<body>
<p>hello</p>
<canvas id="renderCanvas"></canvas>
<script type="module"  src="http://127.0.0.1:5500/gcodeViewerBabylon.js"></script>
</body>

Javascript

import { Scene, Engine } from '/Babylon.js-master/dist/babylon.js';

var canvas = document.getElementById('renderCanvas');
// Load the 3D engine
var engine = new Engine(canvas, true, { preserveDrawingBuffer: true, stencil: true });
//Some More code

我已经尝试过的事情:

  1. 尝试从 npm 安装并尝试导入。这根本不起作用,给出错误“无法解析模块说明符“babylonjs”。相对引用必须以“/”、“./”或“../”开头。”
  2. 尝试 CDN

这两种方法都不起作用。我正在用另一个图书馆清洗完全相同的问题。我是新的网络开发,实际上是我的第一个项目。也许我犯了一些非常根本的错误。

同时我以同样的方式导入了three.js,它运行良好。

感谢您提前提供任何帮助。

4

1 回答 1

0

如果 '/Babylon.js-master/dist/babylon.js' 是与这个脚本相关的,那么它应该是 './Babylon.js-master/dist/babylon.js',如果不是本地的,那么它应该是完整的https ...但是这可能无法解决您的问题,因为该模块看起来不像您需要从中实际导出引擎和场景的“./babylon/core”模块。

您已经在 html 中引用了 babylonjs 核心,因此您应该能够将其更改为此

var canvas = document.getElementById('renderCanvas');
// Load the 3D engine
var engine = new BABYLON.Engine(canvas, true, { preserveDrawingBuffer: true, stencil: true });
var scene = new BABYLON.Scene(engine)

此外,如果您真的想使用模块,您可能可以将脚本类型更改为模块,如下例所示,但我不熟悉该路线 https://stackoverflow.com/a/34607405/12654186

参考 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules https://v8.dev/features/modules#mjs

于 2021-08-19T19:17:04.213 回答