2017-05-24 14 views
0

私は2日間このままで立ち往生しており、この質問に対する回答は見つかりませんでした。Worker内でImmutable.jsをインポート/使用する方法

私のReact、Reduxアプリでは、すべてのオブジェクト操作にimmutable.jsを使用しています。私はいくつかの計算を行うにはウェブワーカーが必要です&アクションを送り返してmiddlewareに送り返してください。この構文を使用して

はエラーを取得します。

Worker.js

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

ブラウザによって報告されたエラー:NetworkError: Failed to load worker script at ../../node_modules/immutable/dist/immutable.js (nsresult = 0x804b001d)

私はどのように&ウェブワーカーファイルにimmutable.jsをインポートするにはどうすればよいです私はそれを使用します?明らかに次のようなものがあります。es6import構文は機能しません。

は機能しません。

import { Map, List } from "immutable"; 

答えて

0

importScripts()は、ブラウザのコンテキスト内で外部サービスからスクリプトファイルをインポート - あなたがそこにあなたのnode_modulesをインポートすることはできませんので、ブラウザは、ノードモジュールにアクセスすることはできません。 。

代わりにCDNJSなどのCDNからImmutableをインポートしてみてください。

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

これに代わるものは、最初にあなたのウェブワーカーJSファイルに不変バンドルし、self.importScripts' 'の必要性を省くためにWebPACKのようにJSのバンドラを使用することですが、私は与えることができないことをやったことがないましたあなたはそれをデモする答えです。 – MunkyJunky

+0

ありがとうございます。このimportScriptsは私のために働いていません。エラー「不変は未定義です。」を取得します。 – Kayote

+0

申し訳ありませんが、あなたは正しいです。しかし、ライブラリは次のように参照されます: 'self.Immutable.Map({a:1、b:2、c:3});' – Kayote

関連する問題