javascript - Korrekt import av LZString i webpack-projekt


Jag försöker importera LZString 1.4.4 till mitt webpack-projekt, men jag får detta fel i Chrome-konsolen:

core.es5.js?de3d:1020 ERROR TypeError: Cannot read property 'compress' of undefined
at FileReader.reader.onload (file-upload.ts?e535:117)
at ZoneDelegate.invoke (zone.js?6524:392)
at Object.onInvoke (core.es5.js?de3d:3890)
at ZoneDelegate.invoke (zone.js?6524:391)
at Zone.runGuarded (zone.js?6524:155)
at FileReader.eval (zone.js?6524:133)

Jag importerar LZString på det här sättet:

import { LZString } from 'lz-string';

och den kodbit som använder LZString är denna:

private compressAndChangeModel(file:File){
    let reader:FileReader = new FileReader();
    reader.onload = () => {
        let compressed:string=LZString.compress(reader.result);
        this.modelChange.next(compressed);
    };
    reader.onerror = (error) => {
        console.log('Error when trying to generate base64: ', error);
    };
    reader.readAsDataURL(file);
}

Hur är det korrekt sättet att importera LZString i mitt webpack-projekt?

Svar #1

LZString exporterar inte en egenskap som heter LZString. Du kan använda en syntetisk standardimport, import LZString från 'lz-string';.

Men, compress exporteras, så du kan bara använda import {{ compress }} from 'lz-string' och bara använda compress().

Om du inte gillar det generiska compress-namnet kan du också ge det ett alias genom att använda import { compress as lzStringCompress } from 'lz-string'; istället.

Relaterade artiklar