Невозможно импортировать OrbitControls с помощью Node 12 ES6 Import

Я использую Node 12 (экспериментальные модули) и три (npm), и я не могу заставить Imports работать для OrbitControls.js. У меня index.js как «скрипт: модуль».

Ни один из этих импортов ES6 не работает

Я попытался скопировать файл OrbitControls.js из папки js (из корневой папки из трех) и разместить его рядом с index.js, а затем добавить

import {OrbitControls} from "./OrbitControls.js"

Не сработало, я получаю сообщение об ошибке

Uncaught SyntaxError: запрошенный модуль './OrbitControls.js' не предоставляет экспорт с именем 'OrbitControls'

Поэтому я также попытался использовать три библиотеки

import {OrbitControls} from "/three/examples/jsm/controls/OrbitControls";

возвращает ошибку 404, поэтому я попробовал относительный импорт

import {OrbitControls} from "../../node_modules/three/examples/jsm/controls/OrbitControls.js";

снова получил ошибку 404.

Айв также пробовал (что-то порекомендовал другой пользователь) const OrbitControls = new THREE.OrbitControls, но, похоже, ошибка возникает только из-за импорта ES6.


person SpikeThea    schedule 29.05.2020    source источник
comment
JSM - это не то же самое, что и ESM developer.mozilla.org/en-US/ docs / Mozilla /   -  person evolutionxbox    schedule 29.05.2020


Ответы (1)


Я не использовал экспериментальные модули, но ваш второй пример должен читать

import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";

без / перед three;

Если это не сработает, вы можете попробовать скопировать исходный код OrbitControls.js из здесь в свою папку.

import { OrbitControls } from "./myFolder/OrbitControls";

Если это сработает, возможно, проблема связана с вашей node_modules установкой.

person Marquizzo    schedule 29.05.2020
comment
К сожалению, второй ответ дает мне ошибку «Не удалось разрешить спецификатор модуля». Относительные ссылки должны начинаться с /, ./ или ../. Я не знаю почему. - person SpikeThea; 30.05.2020
comment
Я пробовал скопировать файл OrbitControls из папки jsm и разместить его рядом с index.js, и проблема в том, что файл OrbitControls заполнен относительным импортом в другие файлы js из ../../../build/three. module.js, поэтому он выдает ошибку в строке 18. Я попробую перезагрузить node_modules. - person SpikeThea; 30.05.2020
comment
Я только что переустановил node_modules, к сожалению, ничего не изменилось. - person SpikeThea; 30.05.2020
comment
Я обновился до Node 14.3, чтобы проверить, были ли это экспериментальные функции, но безрезультатно. - person SpikeThea; 30.05.2020
comment
Я только что попытался импортировать три, используя import * как THREE из 'three', и он говорит, что не удалось разрешить спецификатор модуля. Относительные ссылки должны начинаться с /, ./ или ../. так я думаю это общая проблема с тремя? - person SpikeThea; 30.05.2020