2016-04-01 60 views
2

找不到模塊「angular2 /芯」我有打字稿,的angular2應用的一個例子,但沒有所有的node_modules在我的項目(like this)。必要的文件嵌入我的index.htmlas described in example 1 here)的head打字稿編譯器錯誤TS2307:從CDN加載時沒有NPM

<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.jstsc。我的編輯器(PHPStorm 2016.1)自動編譯文件assets/jstsconfig.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
  • NPM 3.3.12
  • TSC 1.8.9
  • 的Mac OS X 10.11.4
  • PHPStorm 2016.1

我有點失落。任何提示將不勝感激。

+0

我覺得模塊需要從''module「:」system「,''改爲'」module「:」commonjs「,' –

回答

1

由於TypeScript編譯器可以找到Angular2 .d.ts文件,所以存在這個問題。當使用NPM安裝Angular2時提供它們(請參閱文件夾node_modules/angular2下的文件.d.ts)。

當在tsconfig.json文件中設置module屬性時,編譯器將嘗試在node_modules文件夾中找到它們。

你可以注意到,編譯源代碼,但是這個代碼將被編譯但你的應用程序能夠運行時是一個問題......

有喜歡的分型和TSD(不推薦)安裝手動工具等類型但Angular2不在相應的註冊表中。

+0

謝謝你的解釋。這是否正確,我必須等到打字登記冊相應更新? – uruk