2016-04-01 2 views
2

У меня есть пример angular2 приложения с машинописи, но не все node_modules в моем проекте (like this). Необходимые файлы встроены в head из моих index.html (as described in example 1 here):Машинопись Компилятор TS2307 Ошибка: Не удается найти модуль «angular2/ядро» при загрузке из CDN без НПМ

<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.35.0/es6-shim.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.16/system-polyfills.js"></script> 
<script src="https://npmcdn.com/angular2/es6/dev/src/testing/shims_for_IE.js"></script> 
<script src="https://code.angularjs.org/tools/system.js"></script> 
<script src="https://code.angularjs.org/tools/typescript.js"></script> 
<script src="https://code.angularjs.org/2.0.0-beta.13/angular2-polyfills.js"></script> 
<script src="https://code.angularjs.org/2.0.0-beta.13/Rx.js"></script> 
<script src="https://code.angularjs.org/2.0.0-beta.13/angular2.dev.js"></script> 

Поскольку я хочу предварительно собрать мои Машинопись-файлы, я установил node.js и tsc. Мой редактор (PhpStorm 2016,1) автоматически компилирует файлы assets/js, как это определено в tsconfig.json:

{ 
    "compilerOptions": { 
     "target": "es5", 
     "module": "system", 
     "declaration": true, 
     "noImplicitAny": false, 
     "preserveConstEnums": true, 
     "removeComments": true, 
     "outDir": "../assets/js", 
     "sourceMap": true, 
     "emitDecoratorMetadata": true, 
     "experimentalDecorators": true, 
     "emitBOM": true, 
     "moduleResolution": "node" 
    } 
} 

приложение загружается (as described here):

System.config({ 
    packages: { 
     'assets/js': { 
      format: 'register', 
      defaultExtension: 'js' 
     } 
    } 
}); 
System.import('assets/js/main').then(null, console.error.bind(console)); 

На компиляции, я всегда получаю (вид классический) ошибка

error TS2307: Cannot find module 'angular2/core' 

PhpStorm говорит мне, что он не может разрешить импорт:

curly underline in editor

даже тогда, когда все внешние библиотеки загружены:

external libraries in PHPStorm

Но после компиляции (даже с указанными выше ошибками) приложения работает отлично в браузере.

Возможно, не указано определение машинописного текста (TSD) (link here), но tsd устарел. Я читал о typings install angular --ambient, но я не уверен, действительно ли это необходимо (и он выдает кучу других ошибок like this).

Так что мой вопрос:

Является ли это просто побочный эффект моей установки (без node_modules), который я могу игнорировать, или я должен установить другие вещи?

Моя среда:

  • узел 5.4.1
  • НПМ 3.3.12
  • TSC 1.8.9
  • Mac OS X 10.11.4
  • PhpStorm 2016,1

Я немного потерян. Любые подсказки будут высоко оценены.

+0

Я думаю, что модуль должен быть изменен с модуля '': "system", 'to' "module": "commonjs", ' –

ответ

1

У вас возникла проблема, так как компилятор TypeScript может найти файлы Angular2 .d.ts. Они предоставляются при установке Angular2 с использованием NPM (см. Файлы .d.ts под папкой node_modules/angular2).

При настройке объекта module в файле tsconfig.json компилятор попытается найти их в папке node_modules.

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

Есть инструменты, такие как типизация и ТСД (не рекомендуется), чтобы установить вручную, например но Angular2 отсутствует в соответствующих реестрах.

+0

Благодарим вас за это объяснение. Правильно ли тогда, что мне нужно подождать, пока обновятся регистраторы типирования? – uruk

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