如何正确导入模块到threejs项目?

How to import modules to threejs project correctly?

我正在尝试导入模块以便使用光晕效果,但我一直收到此错误。 .js 是从 three/examples/js/ 复制的,所以它们是最新的。

index.html:

<script src="../module/three.js";></script>
<script src="../module/EffectComposer.js"></script>
<script src="../module/CopyShader.js"></script>
<script src="../module/ShaderPass.js"></script>
<script src="../module/RenderPass.js"></script>
<script src="../module/UnrealBloomPass.js"></script>
<script src="../module/MaskPass.js"></script>
<script src="../module/Pass.js"></script>
<script src="../module/LuminosityHighPassShader.js"></script>
<script type="module" src="index.js"></script>

index.js:

import * as THREE from "../module/three.module.js";

...
//bloom renderer
const renderScene = new THREE.RenderPass(scene, camera);

并导致以下错误: 未捕获类型错误:THREE.RenderPass 不是构造函数

我应该如何以正确的方式做到这一点?

您正在导入 three.js 两次。一次通过脚本标签,另一次通过 ES6 import 语句。这是一种错误的模式,绝对需要避免。

ES6 导入在您的应用程序中重新定义了 THREE 命名空间,因此通过 script 标签覆盖了之前的导入。因此,请删除以下行并重试:

import * as THREE from "../module/three.module.js";