Instascan: Não é possível ler a propriedade 'fatia' de nulo (Criar projeto do aplicativo React)

Criado em 11 jun. 2018  ·  7Comentários  ·  Fonte: schmich/instascan

instascan gera um erro em meus projetos:

TypeError: Não é possível ler a propriedade 'slice' de nulo
parseJSFunc
node_modules / instascan / src / zxing.js: 4

Os projetos são criados com Create React App 2. CRA2 está atualmente em alfa, mas por outro lado é muito estável e instascan é a primeira dependência que encontrei que não funciona. Talvez o problema esteja dentro de instascan .

Eu relatei originalmente um problema em react-instascan (rubenspgcavalcante / react-instascan / issues / 9), mas o autor olhou para ele e acredita que o problema está dentro de instascan .

Criei um repositório que reproduz o erro:
https://github.com/lnhrdt/react-instascan-error

Alguma ideia?

Comentários muito úteis

Isso não funcionou para mim @karenjwap , mas me indicou a direção certa.
Idealmente, a construção Emscripten JavaScript da porta C ++ da biblioteca ZXing Java deve ser reconstruída, pois parece que a atual pode não ser compatível com os navegadores mais recentes.

Essencialmente, um objeto com função como valores é transformado em strings e, em seguida, analisado por seus argumentos, corpo e valor de retorno.
A regex que é responsável por essa correspondência de padrão, entretanto, não leva em conta os nomes das funções, apenas as funções sem nome são transmitidas.

tldr Enfim, aqui está a solução:

Substitua o bit sourceRegex pelo seguinte regex:

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

Ou apenas use um garfo:
https://github.com/CrowdReactive/instascan

Todos 7 comentários

Olá, só para dar mais informações sobre o problema. No exemplo create - @lnhrdt , se você apenas sobrescrever todo o index.js com ...

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

... o erro vai acontecer.
O que vi é algum problema com a resolução interna desse script no código. Observei que este script zxing (reduzido) é adicionado diretamente ao projeto e não como uma dependência (este arquivo empacotado deve vir deste projeto ?)
De qualquer forma, se for esse o caso, talvez apenas adicione esse pacote, usando npm / yarn em vez e verifique se a resolução de umd funciona? 🤔

Obrigado pela informação extra @rubenspgcavalcante!

Acabei de atualizar o repositório de exemplo para remover a dependência react-instascan e demonstrar o erro usando apenas instascan , da maneira que Rubens sugeriu.

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

@lnhrdt , talvez este também esteja relacionado # 121
O erro é diferente, mas ainda acho que é algo com a resolução do módulo interno 🤔

Boa percepção @rubenspgcavalcante , parece provável. O autor do instascan ainda não participou dessa discussão. @schmich , você tem alguma ideia sobre esse problema (que pode estar relacionado ao nº 121)? Seus pensamentos seriam úteis aqui!

O erro vem de uma mudança de sintaxe durante a transpilação.

em zxing.js, substitua:
var sourceRegex = / ^ function \ s (([^)] )) \ s {\ s ([^ ] ?) [\ s;] (?: return \ s (. ?) [; \ s] )?} $ /;

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

trabalhou para mim.

+1

Isso não funcionou para mim @karenjwap , mas me indicou a direção certa.
Idealmente, a construção Emscripten JavaScript da porta C ++ da biblioteca ZXing Java deve ser reconstruída, pois parece que a atual pode não ser compatível com os navegadores mais recentes.

Essencialmente, um objeto com função como valores é transformado em strings e, em seguida, analisado por seus argumentos, corpo e valor de retorno.
A regex que é responsável por essa correspondência de padrão, entretanto, não leva em conta os nomes das funções, apenas as funções sem nome são transmitidas.

tldr Enfim, aqui está a solução:

Substitua o bit sourceRegex pelo seguinte regex:

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

Ou apenas use um garfo:
https://github.com/CrowdReactive/instascan

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

alexolliveira picture alexolliveira  ·  5Comentários

igun997 picture igun997  ·  4Comentários

bm2112 picture bm2112  ·  6Comentários

harshad5498 picture harshad5498  ·  7Comentários

schmich picture schmich  ·  11Comentários