treycordova / nativejsx

JSX to native DOM API transpilation. :yellow_heart: <div> ⟹ document.createElement('div')!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

"Cannot read property 'toString' of undefined"

odzb opened this issue · comments

commented

I found that this piece of code:

function func() {
    this.el = <div
    ></div>;
}

...crashes nativejsx so badly that Webpack's watch mechanism stops watching for changes, and the Webpack process needs to be restarted.

I usually come across this bug in code like this:

class Test {
    method() {
        this.el = <div
            style="position: relative"
        ></div>;
    }
}

The error message is:

    ERROR in ./src/path/file.js
    Module build failed: TypeError: Cannot read property 'toString' of undefined
        at join (C:\MyProject\node_modules\escodegen\escodegen.js:555:52)
        at CodeGenerator.ReturnStatement (C:\MyProject\node_modules\escodegen\escodegen.js:1753:25)
        at CodeGenerator.generateStatement (C:\MyProject\node_modules\escodegen\escodegen.js:2469:33)
        at C:\MyProject\node_modules\escodegen\escodegen.js:1083:51
        at withIndent (C:\MyProject\node_modules\escodegen\escodegen.js:582:9)
        at CodeGenerator.BlockStatement (C:\MyProject\node_modules\escodegen\escodegen.js:1033:13)
        at CodeGenerator.generateStatement (C:\MyProject\node_modules\escodegen\escodegen.js:2469:33)
        at CodeGenerator.maybeBlock (C:\MyProject\node_modules\escodegen\escodegen.js:837:33)
        at CodeGenerator.generateFunctionBody (C:\MyProject\node_modules\escodegen\escodegen.js:955:30)
        at CodeGenerator.FunctionExpression (C:\MyProject\node_modules\escodegen\escodegen.js:2051:30)
        at CodeGenerator.generateExpression (C:\MyProject\node_modules\escodegen\escodegen.js:2456:28)
        at CodeGenerator.CallExpression (C:\MyProject\node_modules\escodegen\escodegen.js:1877:28)
        at CodeGenerator.generateExpression (C:\MyProject\node_modules\escodegen\escodegen.js:2456:28)
        at CodeGenerator.generateAssignment (C:\MyProject\node_modules\escodegen\escodegen.js:1012:22)
        at CodeGenerator.AssignmentExpression (C:\MyProject\node_modules\escodegen\escodegen.js:1811:25)

        at CodeGenerator.generateExpression (C:\MyProject\node_modules\escodegen\escodegen.js:2456:28)
        at CodeGenerator.ExpressionStatement (C:\MyProject\node_modules\escodegen\escodegen.js:1335:28)
        at CodeGenerator.generateStatement (C:\MyProject\node_modules\escodegen\escodegen.js:2469:33)
        at C:\MyProject\node_modules\escodegen\escodegen.js:1083:51
        at withIndent (C:\MyProject\node_modules\escodegen\escodegen.js:582:9)
        at CodeGenerator.BlockStatement (C:\MyProject\node_modules\escodegen\escodegen.js:1033:13)
        at CodeGenerator.generateStatement (C:\MyProject\node_modules\escodegen\escodegen.js:2469:33)
        at CodeGenerator.maybeBlock (C:\MyProject\node_modules\escodegen\escodegen.js:837:33)
        at CodeGenerator.generateFunctionBody (C:\MyProject\node_modules\escodegen\escodegen.js:955:30)
        at CodeGenerator.FunctionDeclaration (C:\MyProject\node_modules\escodegen\escodegen.js:1747:22)
        at CodeGenerator.generateStatement (C:\MyProject\node_modules\escodegen\escodegen.js:2469:33)
        at CodeGenerator.Program (C:\MyProject\node_modules\escodegen\escodegen.js:1717:43)
        at CodeGenerator.generateStatement (C:\MyProject\node_modules\escodegen\escodegen.js:2469:33)
        at generateInternal (C:\MyProject\node_modules\escodegen\escodegen.js:2490:28)
        at Object.generate (C:\MyProject\node_modules\escodegen\escodegen.js:2558:18)
     @ ./src/path/index.js 3:0-56

Turns out that I forgot about AssignmentExpressions. A fix is now in master.

4.0.0 is out the door! Cheers.