instascan
рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ:
рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдирд▓ рдХреА рд╕рдВрдкрддреНрддрд┐ 'рдЯреБрдХрдбрд╝рд╛' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛
рдкрд╛рд░реНрд╕рдЬреЗрдПрд╕рдПрдлрдПрдирд╕реА
рдиреЛрдб_рдореЙрдбреНрдпреВрд▓/рдЗрдВрд╕реНрдЯрд╛рд╕реНрдХреИрди/src/zxing.js:4
рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреНрд░рд┐рдПрдЯ рд░рд┐рдПрдХреНрдЯ рдРрдк 2 рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рд╣реИрдВред CRA2 рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрд▓реНрдлрд╛ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рдмрд╣реБрдд рд╕реНрдерд┐рд░ рд╣реИ рдФрд░ instascan
рдкрд╣рд▓реА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рджреЗрдЦреА рд╣реИ рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рд╢рд╛рдпрдж рд╕рдорд╕реНрдпрд╛ instascan
ред
рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ react-instascan
(rubenspgcavalcante/react-instascan/issues/9) рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реВрдЪрдирд╛ рджреА рдереА, рд▓реЗрдХрд┐рди рд▓реЗрдЦрдХ рдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдФрд░ рдорд╛рдирд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ instascan
ред
рдореИрдВрдиреЗ рдПрдХ рднрдВрдбрд╛рд░ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:
https://github.com/lnhrdt/react-instascan-error
рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рдирдорд╕реНрддреЗ, рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред @lnhrdt рд╕реЗ create-react-app рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрджрд┐ рдЖрдк рд╕рдВрдкреВрд░реНрдг index.js рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рджреЗрддреЗ рд╣реИрдВ...
import {Camera} from "instascan";
Camera.getCameras().then(cameras => console.log(cameras));
...рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред
рдореИрдВрдиреЗ рдЬреЛ рджреЗрдЦрд╛ рд╡рд╣ рдХреЛрдб рдореЗрдВ рдЙрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдВрддрд░рд┐рдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВрдиреЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ zxing рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдорд┐рдирд┐рдлрд╛рдЗрдб) рд╕реАрдзреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ рди рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ (рдХреНрдпрд╛ рдпрд╣ рдмрдВрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЖрдИ рд╣реИ?)
рд╡реИрд╕реЗ рднреА рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж npm/рдпрд╛рд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ umd рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдореИрдВ
рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @rubenspgcavalcante!
рдореИрдВрдиреЗ react-instascan
рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рд░реЗрдкреЛ рдХреЛ рдЕрднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд░реВрдмреЗрдиреНрд╕ рдиреЗ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ instascan
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
@lnhrdt , рд╢рд╛рдпрдж рдпрд╣ рднреА рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ #121
рддреНрд░реБрдЯрд┐ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдВрддрд░рд┐рдХ рдореЙрдбреНрдпреВрд▓ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╣реИ
рдЕрдЪреНрдЫреА рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ @rubenspgcavalcante , рд╕рдВрднрд╛рд╡рдирд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рдЗрдВрд╕реНрдЯрд╛рд╕реНрдХреИрди рд▓реЗрдЦрдХ рдиреЗ рдЕрднреА рддрдХ рдЙрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рд╣реИред @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 рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ред
рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ ZXing Java рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ C++ рдкреЛрд░реНрдЯ рдХреЗ Emscripten JavaScript рдмрд┐рд▓реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд╛рд▓рд╛ рдирдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдлрд┐рд░ рдЙрдирдХреЗ рддрд░реНрдХреЛрдВ, рд╢рд░реАрд░ рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд░реЗрдЧреЗрдХреНрд╕ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдирд╛рдорд╣реАрди рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВред
tldr рд╡реИрд╕реЗ рднреА, рдпрд╣рд╛рдБ рд╕рдорд╛рдзрд╛рди рд╣реИ:
sourceRegex
рдмрд┐рдЯ рдХреЛ рдирд┐рдореНрди рд░реЗрдЧреЗрдХреНрд╕ рд╕реЗ рдмрджрд▓реЗрдВ:
/^function[^\(]*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/
рдпрд╛ рдмрд╕ рдПрдХ рдХрд╛рдВрдЯрд╛ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ:
https://github.com/CrowdReactive/instascan
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП @karenjwap рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ред
рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ ZXing Java рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ C++ рдкреЛрд░реНрдЯ рдХреЗ Emscripten JavaScript рдмрд┐рд▓реНрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рд╡рд╛рд▓рд╛ рдирдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдлрд┐рд░ рдЙрдирдХреЗ рддрд░реНрдХреЛрдВ, рд╢рд░реАрд░ рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд░реЗрдЧреЗрдХреНрд╕ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдирд╛рдорд╣реАрди рдлрд╝рдВрдХреНрд╢рди рдкрд╛рд╕ рд╣реЛрддреЗ рд╣реИрдВред
tldr рд╡реИрд╕реЗ рднреА, рдпрд╣рд╛рдБ рд╕рдорд╛рдзрд╛рди рд╣реИ:
sourceRegex
рдмрд┐рдЯ рдХреЛ рдирд┐рдореНрди рд░реЗрдЧреЗрдХреНрд╕ рд╕реЗ рдмрджрд▓реЗрдВ:рдпрд╛ рдмрд╕ рдПрдХ рдХрд╛рдВрдЯрд╛ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ:
https://github.com/CrowdReactive/instascan