Ich war in der Lage, eine lodash-Methode in Angular durch eine Importanweisung zu verwenden, die wie folgt aussah:
import {debounce as _debounce} from 'lodash';
Ich erhalte jetzt die folgende Fehlermeldung, wenn Sie diese Anweisung verwenden:
'"{...}/node_modules/@types/lodash/index"' has no exported member 'debounce'.
Das einzige, was ohne Fehler kompiliert werden kann, ist diese Anweisung:
import * as _ from 'lodash';
In meinem Code ändere ich _debounce()
in _.debounce()
. Ist dies der einzige (und/oder korrekte) Weg, dies zu tun? Gibt es eine Möglichkeit, nur Debounce zu importieren, oder spielt es keine Rolle beim "Treeshaking"? Mir ist klar, dass ich meine eigene Debounce-Funktion schreiben kann, aber ich interessiere mich hauptsächlich für die "richtige" Vorgehensweise.
p.s. Andere Varianten, die ich ausprobiert habe (jede hat eine Art Fehler):
import {debounce as _debounce } from 'lodash/debounce';
import * as _debounce from 'lodash/debounce';
import debounce = require('lodash/debounce');
Zu Ihrer Information ... Ich verwende folgende Versionen:
Winkel: 2.4.5
TypScript: 2.1.5
Winkel-cli: 1.0.0-beta.26
(wenn Sie sich für Baumrütteln interessieren, siehe update)}
Ich denke, um lodash in Ihr Projekt einzubringen, haben Sie es bereits getan
npm install lodash --save
npm install @types/lodash --save-dev
Wenn Sie nur benötigte Funktionen importieren möchten, sollten Sie Folgendes tun:
import * as debounce from 'lodash/debounce'
oder
import { debounce } from "lodash";
Verwenden Sie es als:
debounce()
BTW: Möglicherweise müssen Sie Ihre TypeScript-Version auf 2.0.10
zurückstufen, wenn Sie den Winkel 2.x verwenden.
npm install [email protected] --save-dev
UPDATE:
Vor kurzem wurde mir klar, dass lodash package nicht vom Baum verwackelt werden kann. Wenn Sie drei Schütteln benötigen, verwenden Sie stattdessen einfach lodash-es .
npm install lodash-es --save
npm install @types/lodash-es --save-dev
import debounce from 'lodash-es/debounce'
Ich hatte dasselbe Problem und es begann zu funktionieren, nachdem ich "@ types/lodash" auf Version "4.14.50" geändert hatte.
Dies löste es für mich, wie unter "aktualisiert" von Kuncevič geschrieben und von Roy bearbeitet.
yarn add lodash-es
yarn add @types/lodash-es --dev
import { debounce as _debounce } from 'lodash';
Ich musste die es-module importieren, sonst bekam ich Kompilierungsfehler - höchstwahrscheinlich aufgrund meiner Konfiguration (tsconfig.json).