Я пытаюсь импортировать модуль chess.js следующим образом:
import Chess from 'chess.js';
Это дает мне следующую ошибку при загрузке приложения локально:
require() of ES Module .../app/node_modules/chess.js/chess.js from .../app/node_modules/vue-server-renderer/build.dev.js not supported. Instead change the require of chess.js in .../app/node_modules/vue-server-renderer/build.dev.js to a dynamic import() which is available in all CommonJS modules.
Ну, я уже использую оператор импорта, а не требую. Я пробовал играть с разными способами импорта модуля, но ничего не работает. Я понимаю, что это вызвано использованием TypeScript при создании приложения NuxtJS. В настоящее время я пытаюсь импортировать модуль chess.js в файл .js, а не в файл .ts, и здесь что-то неправильно переводится.
Любые идеи?
Это мой цконфиг:
{
"compilerOptions": {
"target": "ES2018",
"module": "ESNext",
"moduleResolution": "Node",
"lib": [
"ESNext",
"ESNext.AsyncIterable",
"DOM"
],
"esModuleInterop": true,
"allowJs": true,
"sourceMap": true,
"strict": true,
"noEmit": true,
"experimentalDecorators": true,
"baseUrl": ".",
"paths": {
"~/*": [
"./*"
],
"@/*": [
"./*"
]
},
"types": [
"@nuxt/types",
"@nuxtjs/axios",
"@types/node"
]
},
"exclude": [
"node_modules",
".nuxt",
"dist"
]
}
ОБНОВИТЬ Преобразование файла .js в .ts и запуск npm i --save-dev @types/chess.js сделали свое дело. Но мне все еще интересно, есть ли способ заставить работать оригинальный JS-скрипт.
Вы можете попробовать использовать функцию import()
с JavaScript.
Вы должны выполнить следующие шаги, чтобы выполнить это.
Удалите следующую строку из package.json
.
{
"type": "module"
}
Измените свое утверждение import
на приведенное ниже. Убедитесь, что вы используете LTS-версию Node.js, так как более старые версии не поддерживают await
верхнего уровня!
const chess = await import("chess.js");
Это должно устранить ошибку, а также позволит вам использовать JavaScript.
Я также обнаружил, что у nuxt есть опция конфигурации для переноса определенных модулей.