three.js/OrbitControls未定义。

5
当我尝试导入OrbitControls.js时,出现以下错误:无法在模块外使用导入语句
因此,我使用以下代码:<script type="module" src="OrbitControls.js"></script>
但这一次我得到了如下错误:
ReferenceError: OrbitControls is not defined

HTML正文:

<body>
    <div id="page-wrapper">
        <h1>Open Spaceport Container (.drc):</h1>
        <div>
            <input type="file" id="fileInput">
        </div>
    </div>
    <div>
        <pre id="decoderType"><pre>
    </div>
    <div>
        <pre id="fileDisplayArea"><pre>
    </div>
    <script src="https://cdn.rawgit.com/mrdoob/three.js/dev/build/three.min.js"></script>
    <script src="DRACOLoader.js"></script>
   <script src="geometry_helper.js"></script>
   <script type="module" src="OrbitControls.js"></script>
       <script>
        "use strict"
        


      // Configure decoder and create loader.
          var textureLoader = new THREE.TextureLoader();
          const loadManager = new THREE.LoadingManager();
...
1个回答

9

你正在将 ES6 模块与非模块代码混合使用,这是无效的。请按照以下方式进行:

<script type="module">

import * as THREE from 'https://cdn.jsdelivr.net/npm/three@0.121.1/build/three.module.js';

import { DRACOLoader } from 'https://cdn.jsdelivr.net/npm/three@0.121.1/examples/jsm/loaders/DRACOLoader.js';
import { OrbitControls } from 'https://cdn.jsdelivr.net/npm/three@0.121.1/examples/jsm/controls/OrbitControls.js';

// your actual app code

// Configure decoder and create loader.
const manager = new THREE.LoadingManager();
const textureLoader = new THREE.TextureLoader(manager);

</script>

我建议您也将自定义的geometry_helper.js转换为ES6模块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接