2017-04-04 71 views
4

Angular2和lodash ...爲什麼這麼多戲劇?我的意思是真的...Angular2和lodash ...找不到名字

下面是我如何安裝

npm install --save lodash 
npm install --save @types/lodash 

UPDATE:

我也跟着這樣的博客,這樣做,angular2-and-lodash-cannot-find-name: NPM安裝@類型/ lodash @ ts2.0 - save-dev

它工作。只有錯誤是:

node_modules/@類型/茉莉

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:40:37 
A parameter initializer is only allowed in a function or constructor implementation. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:40:45 
Cannot find name 'keyof'. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:40:51 
'=' expected. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:42:45 
A parameter initializer is only allowed in a function or constructor implementation. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:42:55 
Cannot find name 'keyof'. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:42:61 
'=' expected. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:58:41 
Cannot find name 'Partial'. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:99:21 
Cannot find name 'Partial'. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/jasmine/index.d.ts:99:34 
Cannot find name 'Partial'. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/lodash/index.d.ts:241:12 
Duplicate identifier '_'. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/lodash/index.d.ts:241:15 
Cannot find namespace '_'. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/lodash/index.d.ts:243:24 
Cannot find name 'Partial'. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/lodash/index.d.ts:245:18 
Duplicate identifier '_'. 

ERROR in [default] /Users/dude/Documents/frontend/qta-angular2/node_modules/@types/lodash/index.d.ts:362:38 
Cannot find namespace '_'. 
+0

檢查'typings.json',看看這是你lodash ' 「lodash」: 「註冊表:NPM/lodash#4.0.0 + 20160305082308」' 如果不更改該犯lodash的,4.14.0是給你看到的錯誤。 – user3344978

+0

不是,它不在文件中 – Tampa

+0

這很可能是因爲軟件包的版本,請嘗試降低軟件包中的lodash,它的類型是 – Milad

回答

3

我也面臨着同樣的問題(無法找到名爲「部分」),所以暫時我增加了部分變量如以下文件,其中我得到了錯誤,我知道這不是正確的解決方案,但在下面的改變後我不會遇到任何副作用或奇怪的行爲,這可能對您有所幫助。

它缺少在全局JavaScript文件中定義的變量,因此無法在打字稿中找到,但是當它在瀏覽器中運行時,它會得到參考。

var Partial : any; 
1

可能發生的不匹配您的typescript版本事業lodash版本或angular版本。

  • angular 2.xtypescript 2.0.x
  • angular 4.xtypescript 2.2.x

運行運行,所以首先要確保它是正確的^。

然後,確保您的lodash版本與您的typescript版本兼容。

P.S 和一個更小的事情(不造成任何的問題你) - 這是更好地爲install @types/lodash --save-dev它只是@types定義模塊。

1

這個片段添加到您的角cli.json

"scripts": [ 
     "../node_modules/lodash/lodash.js" //make changes accordingly 
     ], 

在組件,纔剛剛導入後部分添加聲明部分和正常使用lodash。

import {EventsService} from '../../core/broadcast-event/broadcaster'; 
declare var _: any; 
0

你如何將lodash導入你的組件?
import * as _ from 'lodash'

以上將導入所有的LoDash的,所以如果你很在意塊大小,你要指定的任何運營商你實際上將要使用。

但是導入爲_應該會自動選取@types。