简体   繁体   中英

Angular2 and lodash…Cannot find name

Angular2 and lodash...why so much drama? I mean really...

Below is how I install

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

UPDATE:

I followed thus blog and did this angular2-and-lodash-cannot-find-name : npm install @types/lodash@ts2.0 --save-dev

It worked. Only errors is with:

node_modules/@types/jasmine

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 '_'.

Simply change your package.json file to use this:

@types/jasmine@2.5.41 // Or 2.5.38

And it should fix the issue.

It could happens cause of mismatch your typescript version with lodash version or angular version.

  • angular 2.x running with typescript 2.0.x
  • angular 4.x running with typescript 2.2.x

So first make sure that it is correct ^.

Then, make sure that your lodash version is compatible with your typescript version.

ps and one more small thing(not causing any of your issues) - it is better to install @types/lodash --save-dev as it just @types definition module.

Add this snippet to your angular-cli.json

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

In Component, Just add declare portion just after import section and use lodash normally.

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

How are you importing lodash into your component?
import * as _ from 'lodash'

The above will import all of LoDash, so if you're concerned about chunk size, you'll want to specify whichever operators you're actually going to be using.

But importing as _ should automatically pick up on the @types.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM