TS2306 не является ошибкой модуля в файле typescript

#typescript

#typescript

Вопрос:

Итак, я получаю эту ошибку для моего файла typescript. Я не понимаю, почему это не работает. Насколько я понимаю, это то, что вам нужно сделать для экспорта класса. Но я продолжаю получать сообщение об ошибке, что мой файл не является модулем и не может быть импортирован.

Ошибка

TS2306 не является ошибкой модуля в файле typescript

 export default class GridApi{
    Hello(): string {
        return "Hello"
    }
}
 

Также вот мой tsconfig

 {
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "CommonJS",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": false,
    "jsx": "react"
  },
  "exclude": [
    "node_modules",
    "./node_modules",
    "./node_modules/*"
  ]
}
 

Комментарии:

1. Как вы его импортируете? И компилируется ли он?

2. импортируйте GridApi из ‘./GridApi’; Он был случайным образом скомпилирован один раз. В противном случае я продолжаю получать сбой при компиляции

3. Ладно, это не так работает. Вам необходимо включить все соответствующие детали в минимальный, проверяемый, воспроизводимый, полный пример MVCE. Мы не сможем вам помочь, если вы просто сообщите нам о проблеме. Какую точную ошибку вы получаете при попытке скомпилировать свой ts?

Ответ №1:

Для вашего module параметра установлено значение CommonJS , которое вам не нужно. Модули CommonJS используют require синтаксис, но вы используете import/export . Вместо этого вы должны использовать ES6 модули:

 "module": "ES6",
 

Подробнее о параметрах TSC читайте здесь.

Комментарии:

1. Трудно понять, является ли это реальной проблемой, но это вполне может быть. Оставление "module": "CommonJS" просто гарантирует, что результирующий скомпилированный Javascript будет использоваться require(...) на стороне импорта и exports. на стороне экспорта.

2. Да, я действительно хотел бы предоставить больше информации, но характер моей работы я не могу раскрыть практически ничего. Это сложно. Что касается предоставленного кода, то это примерно то, что я пытаюсь сделать с помощью простого импорта с другой стороны. Итак, с помощью этого совета я смог заставить его работать, но мне пришлось добавить export { GridApi} в модуль вместо использования. Не знаю, почему это работает, но я действительно новичок в ts, поэтому важно то, что я ценю помощь. Приветствия!