Я получаю эту ошибку при попытке импортировать OrbitControls
ЯС:
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
const geometry = new THREE.BoxGeometry(1, 1, 1);
const material = new THREE.MeshBasicMaterial({color: 0x00ff00});
const cube = new THREE.Mesh(geometry, material);
const controls = new OrbitControls(camera, renderer.domElement);
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
scene.add(cube);
camera.position.set(0, 20, 100);
camera.position.z = 5;
renderer.render(scene, camera);
controls.update();
function animate(){
requestAnimationFrame(animate);
controls.update();
renderer.render(scene, camera);
}
HTML:
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>Document</title>
<style>
body { margin: 0; }
</style>
</head>
<body>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js" ></script>
<script type = "module" src = "task9.js"></script>
</body>
</html>
Я пробовал использовать другой импорт; импортировать { OrbitControls } из 'three/addons/controls/OrbitControls.js'; и импортировать { OrbitControls } из «https://unpkg.com/[email protected]/examples/jsm/controls/OrbitControls.js»; Ни один из них не работает



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


импортировать OrbitControls из '../three/examples/jsm/controls/OrbitControls'
Попробуйте это, это может решить вашу проблему.
В полученной ошибке говорится, что путь к OrbitControls должен быть абсолютным, а не относительным. Вот отличия. В двух словах: вам просто нужно заменить путь к OrbitControls на «./three/examples/jsm/controls/OrbitControls» или «/home/&USER/path/to/OrbitControls».
Попробуйте этот подход. Кстати, в вашем коде есть пара проблем…
OrbitControls после рендеринга.controls.update();Эта версия работает нормально:
import * as THREE from "https://esm.sh/three";
import { OrbitControls } from "https://esm.sh/three/examples/jsm/controls/OrbitControls";
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
const geometry = new THREE.BoxGeometry(1, 1, 1);
const material = new THREE.MeshBasicMaterial({color: 0x00ff00});
const cube = new THREE.Mesh(geometry, material);
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
scene.add(cube);
camera.position.z = 5;
const controls = new OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
controls.enabled = true;
function animate() {
requestAnimationFrame(animate);
controls.update();
renderer.render(scene, camera);
}
animate();
Посмотрите также эти темы:
https://discourse.threejs.org/t/cant-find-threejs-and-threejs-min-js-file/65270/3
Three.js ломается при попытке импортировать OrbitControls.js
Когда я меняю импорт на это, я получаю новую ошибку: GET 127.0.0.1:5500/three/examples/jsm/controls/OrbitControls net::ERR_ABORTED 404 (не найдено)