Ошибка при попытке импортировать модуль узла в NuxtJS TypeScript (ES2018)

Я пытаюсь импортировать модуль 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-скрипт.

В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
1
0
21
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать использовать функцию import() с JavaScript.

Вы должны выполнить следующие шаги, чтобы выполнить это.

  1. Удалите следующую строку из package.json.

    {
      "type": "module"
    }
    
  2. Измените свое утверждение import на приведенное ниже. Убедитесь, что вы используете LTS-версию Node.js, так как более старые версии не поддерживают await верхнего уровня!

    const chess = await import("chess.js");
    

Это должно устранить ошибку, а также позволит вам использовать JavaScript.

Я также обнаружил, что у nuxt есть опция конфигурации для переноса определенных модулей.

hipsterstomper69 10.04.2022 17:29

Другие вопросы по теме