Instascan: Невозможно прочитать свойство 'slice' со значением null (проект Create React App)

Созданный на 11 июн. 2018  ·  7Комментарии  ·  Источник: schmich/instascan

instascan выдает ошибку в моих проектах:

TypeError: не удается прочесть свойство 'slice', равное нулю.
parseJSFunc
node_modules / instascan / src / zxing.js: 4

Проекты создаются с помощью Create React App 2. CRA2 в настоящее время находится в альфа-версии, но в остальном очень стабильна, и instascan - первая зависимость, с которой я столкнулся, которая не работает. Возможно, проблема в instascan .

Первоначально я сообщил о проблеме в react-instascan (rubenspgcavalcante / react-instascan / issues / 9), но автор изучил ее и считает, что проблема находится в instascan .

Я создал репозиторий, в котором воспроизводится ошибка:
https://github.com/lnhrdt/react-instascan-error

Любые идеи?

Самый полезный комментарий

Это не сработало для меня @karenjwap , но указывало мне в правильном направлении.
В идеале сборка Emscripten JavaScript для порта C ++ библиотеки ZXing Java должна быть перестроена, поскольку кажется, что текущая версия может быть несовместима с новыми браузерами.

По сути, объект с функцией в качестве значений превращается в строки, а затем анализируется на предмет их аргументов, тела и возвращаемого значения.
Регулярное выражение, отвечающее за это сопоставление с образцом, однако, не учитывает имена функций, передаются только безымянные функции.

tldr В любом случае, вот решение:

Замените бит sourceRegex следующим регулярным выражением:

/^function[^\(]*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/

Или просто используйте вилку:
https://github.com/CrowdReactive/instascan

Все 7 Комментарий

Привет, просто чтобы подробнее рассказать о проблеме. В примере create-response -app из

import {Camera} from "instascan";
Camera.getCameras().then(cameras => console.log(cameras));

... произойдет ошибка.
Я увидел некоторую проблему с внутренним разрешением этого скрипта в коде. Я заметил, что этот сценарий zxing (минифицированный) добавляется непосредственно в проект, а не как зависимость (должен ли этот связанный файл взят из этого проекта ?)
В любом случае, если это так, может быть, просто добавьте этот пакет, используя вместо этого npm / yarn, и проверьте, работает ли разрешение umd? 🤔

Спасибо за дополнительную информацию @rubenspgcavalcante!

Я только что обновил пример репозитория, чтобы удалить зависимость react-instascan и продемонстрировать ошибку, используя только instascan , как предложил Рубенс.

https://github.com/lnhrdt/react-instascan-error

@lnhrdt , может, это тоже связано # 121
Ошибка другая, но я все еще думаю, что что-то с разрешением внутреннего модуля 🤔

Хорошее понимание @rubenspgcavalcante , кажется вероятным. Автор instascan еще не участвовал в этой дискуссии. @schmich есть ли у вас какое-либо представление об этой проблеме (которая может быть связана с № 121)? Здесь вам пригодятся ваши мысли!

Ошибка возникает из-за изменения синтаксиса во время транспиляции.

в zxing.js замените:
var sourceRegex = / ^ function \ s (([^)] )) \ s {\ s ([^ ] ?) [\ s;] (?: return \ s (. ?) [; \ s] )?} $ /;

от:
var sourceRegex = / ^ function \ s \ S (([^)] )) \ s {\ s ([^ ] ?) [\ s;] (?: return \ s (. ?) [; \ s] * )?} $ /;

работал у меня.

+1

Это не сработало для меня @karenjwap , но указывало мне в правильном направлении.
В идеале сборка Emscripten JavaScript для порта C ++ библиотеки ZXing Java должна быть перестроена, поскольку кажется, что текущая версия может быть несовместима с новыми браузерами.

По сути, объект с функцией в качестве значений превращается в строки, а затем анализируется на предмет их аргументов, тела и возвращаемого значения.
Регулярное выражение, отвечающее за это сопоставление с образцом, однако, не учитывает имена функций, передаются только безымянные функции.

tldr В любом случае, вот решение:

Замените бит sourceRegex следующим регулярным выражением:

/^function[^\(]*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/

Или просто используйте вилку:
https://github.com/CrowdReactive/instascan

Была ли эта страница полезной?
0 / 5 - 0 рейтинги