2017-03-08 100 views
0

是否有任何文檔或一步一步的指南介紹瞭如何做到這一點?如何在打字稿中使用第三方npm模塊(Angular2)

我想舉個例子:我試圖在角度應用中使用包simpl-schema。我創建了一個新的應用:

ng new ng-ss-test 
cd ng-ss-test 
npm install --save simpl-schema 

在我加入app.component.ts:

let SimpleSchema = require('simpl-schema').default; 

現在我已經得到了錯誤:

ERROR /app/app.component.ts (2,20): Cannot find name 'require'.) 

所以,我已經聲明要求:

declare var require: any 

好的,這實際上是工作。我可以寫東西像

const schema = new SimpleSchema({ 

但我認爲那不是做的方式。我仍然有警告:

WARNING in ./~/handlebars/lib/index.js 
require.extensions is not supported by webpack. Use a loader instead. 
@ ./~/message-box/dist/MessageBox.js 13:18-39 
@ ./~/simpl-schema/dist/SimpleSchema.js 
@ ./~/simpl-schema/dist/main.js 
@ ./src/app/app.component.ts 
@ ./src/app/app.module.ts 
@ ./src/main.ts 
@ multi webpack-dev-server/client?http://localhost:4200 ./src/main.ts 

當然,我可以通過運行

dts-gen -m simpl-schema 

,但我仍然需要require線,右創建類型信息SIMPL - 舍姆嗎?我想知道在角度上使用第三方npm模塊的正確方法是什麼。

+1

Angular CLI有關於添加第三方庫的文檔https://github.com/angular/angular-cli/wiki/stories-third-party-lib –

+0

好的,這給了我與使用'require'相同的結果。有關'require.extensions'的警告來自'simpl-schema'模塊,因此它必須在那裏修復。我想知道webpack如何知道它必須從'node_modules/simpl-schema'目錄中導入哪些文件。 – MarcS82

回答

0

爲了使用第三方模塊,您需要定義打印稿。每個模塊都帶有一個typescript d.ts文件,它定義了您可以在庫中使用的方法。然而,這並沒有任何包含,所以您將需要編寫自己的d.ts文件,或點擊這裏查看DefinitelyTyped的回購:https://github.com/DefinitelyTyped/DefinitelyTyped

只需添加d.ts文件到你的項目,你就可以使用你的庫。