Ошибка разрешения модуля, если файл tsx включен в группу элементов проекта - PullRequest
0 голосов
/ 20 октября 2018

Я создал новый основной проект asp.net с реагирующим шаблоном и настроил для него Typescript.

Затем я создал очень простой файл с именем Test.tsx со следующим кодом

import React from 'react';

class Test extends React.Component {

    render() {
        return (
            <div/>
        );
    }
}

export default Test;

Это привело к ошибке

Ошибка TS1192 (TS) Module '«*** / React / React / ClientApp / node_modules / @ types / реагировать / индекс» не имеет экспорта по умолчанию.

enter image description here

Затем я скопировал вставленный файл в то же место и назвал его Test2.tsx.Ошибка просто волшебным образом исчезла.enter image description here

Я сделал еще несколько копаний и обнаружил, что если я добавлю файл, щелкнув правой кнопкой мыши -> Добавить новый элемент -> Файл JSX TypeScript, то он добавит запись в .csproj file

  <ItemGroup>
    <TypeScriptCompile Include="ClientApp\src\Test.tsx" />
  </ItemGroup>

Удаление этой строки устранит ошибку компиляции.Но почему это происходит ??Нужно ли мне идти и удалять эту строку каждый раз, когда я хочу добавить новый файл TSX?

Использование Visual Studio 2017 и TypeScript 3.1.3

1 Ответ

0 голосов
/ 20 октября 2018

Поскольку модуль react не имеет экспорта по умолчанию (по крайней мере, согласно объявлениям в @types/react), если вы хотите import React from "react" и получить весь модуль, вам необходимо включить esModuleInterop TypeScriptопция компилятора.Если у вас есть файл tsconfig.json, то вы можете просто добавить "esModuleInterop": true в блок "compilerOptions".Если у вас нет такого файла, то я не знаю, как изменить параметры TypeScript для вашего проекта Visual Studio.

Я подозреваю, что удаление строки TypeScriptCompile из вашего файла .csproj нехорошее решение.Тот факт, что ошибка устраняется, говорит о том, что он может помешать вашему файлу .tsx вообще не проверяться на наличие ошибок (или, по крайней мере, помешать его проверке в соответствии с вашими основными параметрами TypeScript), что может позволить устранить проблемы.незамеченным в будущем.

...