dart-sass в Web Worker: `Ошибка: незаконный вызов` - PullRequest
0 голосов
/ 12 марта 2019

Запуск dart-sass в браузере официально не поддерживается (# 25), но, возможно, кто-то может подсказать мне, как это отладить (очень сложно без исходных карт для кода Dart).

Error: Error: Illegal invocation
    at Object.AU (http://localhost:5000/ParcelWorker.cc8dae65.js:536605:15)
    at w6.$2 (http://localhost:5000/ParcelWorker.cc8dae65.js:556087:53)
    at u6.v7 (http://localhost:5000/ParcelWorker.cc8dae65.js:543941:33)
    at u6.v6 (http://localhost:5000/ParcelWorker.cc8dae65.js:543945:19)
    at ik.uh (http://localhost:5000/ParcelWorker.cc8dae65.js:542621:20)
    at tF.$0 (http://localhost:5000/ParcelWorker.cc8dae65.js:542922:19)
    at Object.ex (http://localhost:5000/ParcelWorker.cc8dae65.js:529758:55)
    at aj.bb (http://localhost:5000/ParcelWorker.cc8dae65.js:542753:9)
    at iz.bb (http://localhost:5000/ParcelWorker.cc8dae65.js:542606:14)
    at iz.cA (http://localhost:5000/ParcelWorker.cc8dae65.js:542577:12)

Это происходит при добавлении любого импортера (даже импортера noop).Выполнение этого кода в основном потоке (с использованием только require) работает нормально.Ошибка выдается без выполнения импортера один раз.

/*  index.js */

// this works:
require("./worker.js");

// this doesn't:
const worker = new Worker("./worker.js");
worker.onerror = console.error;
/*  worker.js */
self.Buffer = require("buffer").Buffer;

const sass = require("sass");

const data = `$colorRed: red;
#header {
  color: $colorRed;
}`;

function run() {
    return sass.renderSync({
        data,
        importer: [
            (url, prev, done) => {
                return { file: url };
            }
        ]
    });
}

console.log(run().css.toString("utf8"));

Полное воспроизведение (просто запустите npm i и npm start): https://github.com/mischnic/sass-worker-importer - ошибка выводится наконсоль

...