2016-05-27 6 views
13

Я следовал за angular2 quick start создать свой проект и все работает нормально, но мой«TSC -w»командная строка продолжает говорить мне:angular2: Не удается найти модуль @ угловой/ядро ​​"

app/components/company/company.ts(1,36): error TS2307: Cannot find module '@angular/core'. 
app/components/company/company.ts(5,22): error TS2307: Cannot find module '@angular/router'. 
app/components/mission/mission.ts(1,36): error TS2307: Cannot find module '@angular/core'. 
app/components/mission/mission.ts(3,22): error TS2307: Cannot find module '@angular/router'. 

и там это много другой линии, как это. Тем не менее, все скомпилировано успешно, и мое приложение работает нормально, но очень неприятно иметь все эти предупреждения/ошибки, как реальные ошибки, что-то затеряется посреди них.

Я использую Angular2 rc1, TypeScript 1.8.10, WebStorm EAP (хотя я не использую систему компиляции WebStorm TypeScript, я полагаюсь на открытый терминал с командной строкой «tsc -w»).

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

Update

Вот мой tsconfig.json файл:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "sourceMap": true, 
    "experimentalDecorators": true, 
    "emitDecoratorMetadata": true, 
    "module": "system", 
    "noImplicitAny": false, 
    "outDir": "js", 
    "rootDir": "app" 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 
+0

Ну ... По-видимому, этот файл уже сменился в быстром запуске с момента создания моего проекта. В моих типах я просто «es6-shim», «жасмин» и «узел». Тем не менее, я вижу, что сейчас, с самого начала, «es6-shim» заменяется на «core-js», но у меня такое ощущение, что он не решит мою проблему (я ошибаюсь?). Более того, решение, предложенное «Тьерри Темплер», работает. Спасибо – ssougnez

ответ

16

Вы должны использовать moduleResolution атрибут node:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "sourceMap": true, 
    "experimentalDecorators": true, 
    "emitDecoratorMetadata": true, 
    "module": "system", 
    "moduleResolution": "node", // <----- 
    "noImplicitAny": false, 
    "outDir": "js", 
    "rootDir": "app" 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 
+0

Кажется, это действительно лучше. Не могли бы вы просто объяснить мне в двух словах, что он изменил? – ssougnez

+1

Это способ, которым компилятор будет обнаруживать файлы 'd.ts' для контрактов библиотек. См. Этот вопрос: http://stackoverflow.com/questions/37413533/what-is-the-purpose-of-tsconfig-json/37413595#37413595. –

+9

Как-то у моего редактора все еще есть 'Не могу найти модуль '@ angular/core'', хотя это находится в' src/'tsconfig? – PascalVKooten

4

Сначала нужно добавить типизации на глобальном как показано ниже.

npm install -g typings 

Затем создайте typings.json, используя команду ниже.

typings init 

Paste ниже код в typings.json

{ 
    "name": "ng2-application", 
    "globalDependencies": { 
    "core-js": "registry:dt/core-js#0.0.0+20160725163759", 
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255", 
    "node": "registry:dt/node#6.0.0+20160909174046" 
    } 
} 

Теперь вам нужно добавить следующий код в tsconfig.json

"compilerOptions": { 
     "moduleResolution": "node" 
     } 

После выполнения выше шагов, которые вы будете иметь возможность получить определения на F12.

Смежные вопросы