C3: рдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ () рдореЗрдВ рдЕрд╕рдорд░реНрде

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЕрдЧре░ 2017  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: c3js/c3

TypeError: Cannot read property 'prototype' of undefined

      at ../../../../node_modules/c3/c3.js:2720:30
      at ../../../../node_modules/c3/c3.js:3263:3
      at Object.<anonymous>.CLASS.target (../../../../node_modules/c3/c3.js:2:82)
      at Object.<anonymous> (../../../../node_modules/c3/c3.js:5:2)

рдЬреЛ рд╣реИ

        window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд╣рд╛рдВ рдХрд░реЗрдВред рдЬреЗрд╕реНрдЯ, jsdom, рдпрд╣рд╛рдБ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@fernandes рд╕рдордЭ рдЧрдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдФрд░ рдЦреЗрд▓рд╛ рдФрд░ c3 рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдХрд░ рд╕реНрдиреИрдкрд╢реЙрдЯ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

// __mocks__/c3.js
module.exports = () => 'c3';

рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ package.json рдХреЗ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд┐рдЧ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ:

"moduleNameMapper": {
  "c3": "<rootDir>/__mocks__/c3.js",
}

рд╕рднреА 13 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рднреА рдорд┐рд▓ рд░рд╣реА рд╣реИ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ c3 рдпрд╛ jsdom рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдПрдХ рдЦрд╛рд▓реА npm рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдлрд┐рд░, рдЗрд╕реЗ рдЖрдЬрдорд╛рдПрдВ:

npm i -S c3 jsom
node -e "var JSDOM = require('jsdom').JSDOM; global.window = new JSDOM().window; require('c3');"

рдЖрдЙрдЯрдкреБрдЯ:

/home/herinson/example/node_modules/c3/c3.js:2720
        window.SVGPathElement.prototype.createSVGPathSegClosePath = function () {
                             ^

TypeError: Cannot read property 'prototype' of undefined
    at /home/herinson/example/node_modules/c3/c3.js:2720:30
    at /home/herinson/example/node_modules/c3/c3.js:3263:3
    at CLASS.target (/home/herinson/example/node_modules/c3/c3.js:2:82)
    at Object.<anonymous> (/home/herinson/example/node_modules/c3/c3.js:5:2)
    at Module._compile (module.js:573:30)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
    at Module.require (module.js:517:17)

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рдереАред
рд╕рдВрднрд╡рддрдГ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд https://github.com/tmpvar/jsdom/pull/1445

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рд┐рд░реНрдл SVGPathElement рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ jsdom рдХреЗ рдЕрдкреВрд░реНрдг рдПрд╕рд╡реАрдЬреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рджреЛрд╖ рдирд╣реАрдВ рджреЗрддрд╛; рд╡рд╣ рдмрдХрд╡рд╛рд╕ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реИ)

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рдордХрд╛рдЬ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдореИрдВ рдПрдХ рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реА 3 рдЬреЗрдПрд╕рдбреЙрдо/рдЬреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЕрд╡рд░реЛрдзрдХ рд╣реИред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реА 3 рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ ...

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рд┐рд░реНрдл SVGPathElement рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдордЬрд╛рдХ рдЙрдбрд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрд╣ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред

рдореИрдВ c3 рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рд╣реИрдВред
рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдереЗ рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВ рдЕрднреА рднреА рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреМрди рд╕реА рдирд┐рд░реНрднрд░рддрд╛ c3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рд╣реИред
рдкреАрдПрд╕: рдЬреЗрдПрд╕рдбреЙрдо рдореЗрд░реА рдкрд░реАрдХреНрд╖рдг рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред

рдпрд╣ рдкрд╛рдпрд╛! рдХреАрди-рдЬреЗрдПрд╕ рдХреЛ рд╡рд╛рдкрд╕ v3.4.1 рдкрд░ рдШреБрдорд╛рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ "рд╣рд▓" рд╣реЛ рдЧрдИред рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 4.0.0 рд╣реИред

рдореЗрд░реА рдЬреИрд╕реА рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреАрди рдиреЗ рдЕрдкрдиреЗ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рдХреЛ 3 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛: https://github.com/keen/keen-js/releases/tag/v4.0.0

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрддреНрд╕реБрдХ-dataviz.js c3.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЪрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдХреАрди-рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рдХреАрди-рдЬреЗрдПрд╕ рдХреЛ рд╣рдЯрд╛рдирд╛ рд╣реИред

рдореИрдВ рдЬреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-c3js рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реВрдВ

    TypeError: Cannot read property 'prototype' of undefined

      at node_modules/c3/c3.js:2806:30
      at node_modules/c3/c3.js:3349:3

рд▓рд╛рдЗрди рдирдВрдмрд░ рдкрд░ рдмрд╕ рдХреБрдЫ рдЕрдВрддрд░, рд╢рд╛рдпрдж рдХреБрдЫ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд (рдореИрдВ c3 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: 0.4.18)

рдЕрджреНрдпрддрди: window.SVGPathElement.prototype.createSVGPathSegClosePath = function () рдпрд╣рд╛рдБ рднреА рд▓рд╛рдЗрди рд╣реИ

рдкреАрдПрд╕: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд╕ рдордЬрд╛рдХ рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ

рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЙрддреНрддрд░ рдХреНрдпреЛрдВ рджреЗрддрд╛ рд╣реИ: https://github.com/tmpvar/jsdom/issues/1423

@brandonros
рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдордЬрд╝рд╛рдХрд┐рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдореЗрдВ c3 рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ SVGPathElement рдХреЛ рдбрдореА рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдмрджрд▓рдирд╛ рдареАрдХ рд╣реИред

рдореИрдВ рд╡рд┐рдВрдбреЛ рдХреЛ рдбрдореА рдХрд░рдХреЗ рдиреЛрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ c3.js рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдиреАрдЪреЗ рдХреА рддрд░рд╣ SVGPathElement:

var JSDOM = require('jsdom').JSDOM;
global.window = new JSDOM().window;
window.SVGPathElement = function () {};
console.log(require('c3')); // => no error!

@fernandes рдореБрдЭреЗ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХреЛрдИ рдЙрдкрд╛рдп рдвреВрдВрдв рдкрд╛рдП рд╣реИрдВ?

рд╣рд╛рдп @esonmez , рдореИрдВрдиреЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ ...

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╢реЛрдз рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ jsdom рдЙрд╕ рдкрд░ SVG рд╕рд╛рдорд╛рди рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ c3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рдЬреЛ jdsom рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ), рдореИрдВрдиреЗ c3 рдШрдЯрдХ рдХреЛ рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХреЗ рдЙрддрдирд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛

@fernandes рд╕рдордЭ рдЧрдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдФрд░ рдЦреЗрд▓рд╛ рдФрд░ c3 рдХрд╛ рдордЬрд╝рд╛рдХ рдЙрдбрд╝рд╛рдХрд░ рд╕реНрдиреИрдкрд╢реЙрдЯ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:

// __mocks__/c3.js
module.exports = () => 'c3';

рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ package.json рдХреЗ рдЬреЗрд╕реНрдЯ рдХреЙрдиреНрдлрд┐рдЧ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ:

"moduleNameMapper": {
  "c3": "<rootDir>/__mocks__/c3.js",
}

рд╣рд╛рд╣рд╛рд╣рд╛ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдЯрд┐рдк рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ @esonmez рдХреЗ рд╕реБрдЭрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ

Out of the box, Create React App only supports overriding these Jest options:

  тАв collectCoverageFrom
  тАв coverageReporters
  тАв coverageThreshold
  тАв snapshotSerializers.

These options in your package.json Jest configuration are not currently supported by Create React App:

  тАв moduleNameMapper

If you wish to override other Jest options, you need to eject from the default setup. You can do so by running npm run eject but remember that this is a one-way operation. You may also file an issue with Create React App to discuss supporting more options out of the box.

рдХрдо рд╕реЗ рдХрдо рдХрд╣рдирд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдЬреЗрд╕реНрдЯ рд╕реЗрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдореИрдВ рдЗрд╕реЗ @ kt3k рдХреА рддрд░рд╣ рд╣реА

global.SVGPathElement = function () {}

рдФрд░ рдпрд╣ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╕рднреА рдХреЛ рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

C3.js рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, vuejs, ..) рдХреЗ рдмреАрдЪ рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ https://groups.google.com/forum/#!forum/c3js рдкрд░ Google рд╕рдореВрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ

рд╢реБрдХреНрд░рд┐рдпрд╛!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

unlight picture unlight  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alantygel picture alantygel  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Kreozot picture Kreozot  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Shugardude picture Shugardude  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

laurentdebricon picture laurentdebricon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ