2016-07-20 6 views
1

Eine sehr häufige Frage.Import einzelne Funktion von lodash in Angular 2 + webpack Projekt

Wie importieren Sie eine einzelne Funktion von lodash?

Ich versuchte lodash.orderby, aber ich glaube, dass mit commonjs verwendet werden soll. Ich habe auch lodash-es ohne viel Erfolg versucht. Ich bekomme immer noch eine Vielzahl von Fehlern wie Cannot find module 'lodash-es' oder Cannot find module 'lodash/orderBy'.

Eine andere Möglichkeit war, custom builds zu verwenden, aber ich konnte nicht herausfinden, wie man eine einzelne Funktion richtig importiert.

läuft Angular 2 RC-4, Typoskript 2.1.0-dev, Webpack 2 (Beta).

Typoskript ist in der folgenden Art und Weise konfiguriert:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "es6", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false, 
    "moduleResolution": "node" 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/main", 
    "typings/main.d.ts" 
    ] 
} 

UPDATE

Ich bin derzeit das Modul auf folgende Weise importieren:

import {orderBy} from 'lodash-es'; 

Diese tatsächlich funktioniert (das heißt, die App verwendet OrderBy korrekt), aber der Fehler bleibt bestehen. Ich glaube, das Problem ist, dass es keine Typdefinition für Lodashes gibt.

typings.json

{ 
    "globalDependencies": { 
    "core-js": "registry:dt/core-js#0.0.0+20160602141332", 
    "jasmine": "registry:dt/jasmine#2.2.0+20160505161446", 
    "jquery": "registry:dt/jquery#1.10.0+20160417213236", 
    "node": "registry:dt/node#6.0.0+20160613154055", 
    "typeahead": "registry:dt/typeahead#0.11.1+20160317120654" 
    }, 
    "dependencies": { 
    "lodash": "registry:npm/lodash#4.0.0+20160416211519" 
    } 
} 

UPDATE:

Dies ist eine alte Frage, aber für die Zukunft, wenn Sie require nicht verwenden, müssen Sie möglicherweise die korrekte Eingabe Informationen installieren . In diesem speziellen Fall musste ich das Modul lodash-es installieren und deklarieren.

+0

Was ist Inhalt Ihrer 'typings.json' Datei und wie Sie die orderby importieren? – tomastrajan

+0

Importieren Sie lodash.orderby nicht, fordern Sie es an. – estus

+0

@tomastrajan Ich habe meine Frage mit weiteren Informationen aktualisiert. Ich denke, die Typisierungsdefinitionen sind für Lodashes nicht verfügbar. Ich habe die Definition für lodash aufgenommen und das kann man in typings.json sehen. –

Antwort

1

Installieren Sie die Funktion erforderlich:

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

es dann importieren mit:

const countBy = require('lodash.countBy'); 
+0

Das war eine alte Frage, aber soweit ich mich erinnern kann, habe ich 'require' nicht benutzt. Das Problem bestand darin, die richtigen Typings zu deklarieren. –

+0

Ja, aber leider ist es immer noch gültig. Ich habe viel Zeit damit verbracht. Und da Antwort auf Ihre Frage in commens versteckt ist, habe ich sie sichtbarer gemacht, indem ich die Antwort einreichte. Wie auch immer, das ist der einzige Weg, wie ich das gemacht habe. – sax

+0

Es ist gültig, aber nicht für diese spezielle Frage. Ich werde die Frage aktualisieren, um zu beschreiben, was in diesem Fall funktioniert hat. –