Basi c Настройка для типов Typescript - Не удается найти имя 'angular' - PullRequest
0 голосов
/ 24 марта 2020

Моя команда работает над более старым проектом AngularJS, который мы недавно обновили до. Net Core 3.1, в то время как проект работает без него, мы хотели бы начать обновление наших сценариев для использования TypeScript. Никто из нас на самом деле раньше не использовал Typescript, и я уверен, что в нашей конфигурации есть что-то очень сложное c.

Я создал демонстрационный проект, который можно найти здесь: https://github.com/ExcaliburVT/TypeScriptBasic

В проекте есть ссылки на libman для angularjs, angular материала, bootstrap et c вместе с соответствующими «печатными текстами» TypeScript (по крайней мере, я так думаю) они правильные). Здесь: https://github.com/ExcaliburVT/TypeScriptBasic/blob/master/libman.json

Наш tsconfig. json точно такой: https://github.com/ExcaliburVT/TypeScriptBasic/blob/master/tsconfig.json

{
  "compilerOptions": {
    "noImplicitAny": true,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es6",
    "moduleResolution": "Node",


    "baseUrl": "wwwroot",
    "typeRoots": ["./lib/types"]
  },
  "include": [
    "wwwroot/Scripts/**/*"
  ],
  "exclude": [ "node_modules", "**/*.spec.ts" ],
  "compileOnSave": true
}

Наконец я создал два примера файлов ts с разными способами обращения к angular.

https://github.com/ExcaliburVT/TypeScriptBasic/blob/master/wwwroot/Scripts/exampleOne.ts // TS2304 (TS) Не удается найти имя 'angular' // TS2503 (TS) Не удается найти пространство имен 'ng'

https://github.com/ExcaliburVT/TypeScriptBasic/blob/master/wwwroot/Scripts/exampleTwo.ts // TS2688 (TS) Невозможно найти файл определения типа для 'angular'

Достигнем предела, если мы ДОБАВЬТЕ путь к папкам типов в «include» tsconfig. json библиотеки кажутся найденными, но затем мы получаем ошибки компилятора для самих типов.

Я уверен, что это что-то довольно простое, что мы неправильно настроили, но у меня нет идей.

Заранее спасибо!

Дополнительное тестирование. Обратите внимание, что установка путей напрямую тоже не работает.

"baseUrl": "wwwroot",
    "paths": {
      "angular": [ "lib/types/angular" ],
      "angular-material": [ "lib/types/angular-material" ],
      "bootstrap": [ "lib/types/bootstrap" ],
      "jquery": [ "lib/types/jquery" ]
    }

1 Ответ

0 голосов
/ 24 марта 2020

Ну, похоже, проблема root в том, что я пытался использовать libman, когда машинописный код ожидает, что все будет работать через узел. Я запустил новый проект, используя шаблон. net core angular, и вот, он не использует libman, он просто использует узел с пакетом json, который работает ПРОСТО.

Я взял этот же шаблон и применил его к моему тестовому проекту, и теперь все работает прекрасно ... Удивительно.

В итоге это похоже на документацию, предлагающую использовать libman для javascript управление пакетами https://docs.microsoft.com/en-us/aspnet/core/client-side/libman/libman-vs?view=aspnetcore-3.1 действительно вводит в заблуждение, особенно для тех, кто не знаком со всей экосистемой.

Я полагаю, что это жизнеспособная альтернатива, если вы хотите выполнить основные c разработка без узла в качестве зависимости.

Примечание: я обновляю репозиторий git с «рабочей» версией на тот случай, если кто-то захочет увидеть разницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...