2017-05-24 3 views
0

Ich habe mit diesem für zwei Tage fest und habe keine Antwort auf diese Frage gefunden.So importieren/verwenden Sie Immutable.js innerhalb der Worker

In meiner React, Redux App verwende ich immutable.js für alle Objektmanipulationen. Ich brauche einen Web-Arbeiter, um einige Berechnungen durchzuführen & die Aktion zurück auf die middleware für den Versand buchen.

mit dieser Syntax wird eine Fehlermeldung:

Worker.js

self.importScripts("../../node_modules/immutable/dist/immutable.js"); 

Fehler von Browser gemeldet: NetworkError: Failed to load worker script at ../../node_modules/immutable/dist/immutable.js (nsresult = 0x804b001d)

Wie kann ich immutable.js in Web-Worker-Datei & importieren, wie zu tun Ich benutze es? Natürlich funktioniert die folgende es6import Syntax nicht.

nicht funktionieren würde:

import { Map, List } from "immutable"; 

Antwort

0

importScripts() importiert Skriptdateien von externen Dienstleistungen im Zusammenhang mit dem Browser - der Browser keinen Zugriff auf Knotenmodule, so dass Sie nicht dort Ihre node_modules importieren .

Versuchen Sie stattdessen, Immutable von einem CDN zu importieren, z. B. CDNJS.

self.importScripts("https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js"); 
var map1 = Immutable.Map({a:1, b:2, c:3}); 
var map2 = map1.set('b', 50); 
map1.get('b'); // 2 
map2.get('b'); // 50 
+1

Eine Alternative dazu wäre einen JS-Bündler verwenden wie webpack in Ihre Web-Arbeiter JS-Datei für 'self.importScripts' ersten und läßt die Notwendigkeit unveränderlich zu bündeln, aber nie getan zu haben, dass ich nicht geben kann, Sie haben eine Antwort, die es demonstriert. – MunkyJunky

+0

Danke dafür. Diese importScripts funktionieren auch nicht für mich. Der Fehler 'Unveränderbar ist nicht definiert'. – Kayote

+0

Entschuldigung, Sie haben Recht. Die Bibliothek wird jedoch wie folgt referenziert: 'self.Immutable.Map ({a: 1, b: 2, c: 3});' – Kayote

Verwandte Themen