2015-06-22 4 views
4

Я пытаюсь использовать babel для трансляции в ES6 и JSX для тестов мокко.Ошибка `invalid mapping`, пытающаяся использовать babel, требует перехвата и polyfill с реакцией jsx transpile

Предположим, что мы имеем test.jsx так:

var React = require("react"); 
React.createClass({ 
    render: function(){ 
    return (<div>Hello World</div>); 
    } 
}); 

Запуск babel test.jsx дает действительный преобразованный код. Нет проблем.

Я бы ожидать, что если я создаю test.js файл так:

require("babel/register"); 
require("./test.jsx"); 

, а затем запустить node test.js, было бы transpile мой JSX для меня в очереди, но вместо этого я получаю сообщение об ошибке:

c:\Users\user\dev\app\node_modules\babel\node_modules\babel-core\lib\babel\t 
ransformation\file\index.js:628 
     throw err; 
      ^
Error: c:/Users/user/dev/app/test.jsx: Invalid mapping: {"generated":{"line" 
:6,"column":11},"source":"c:/Users/user/dev/app/test.jsx","name":null} 
    at SourceMapGenerator_validateMapping [as _validateMapping] (c:/Users/user/dev/app/node_modules\babel\node_modules\source-map\lib\source-map\source-map- 
generator.js:275:15) 
    at SourceMapGenerator_addMapping [as addMapping] (c:/Users/user/dev/app/ 
node_modules\babel\node_modules\source-map\lib\source-map\source-map-generator.j 
s:105:14) 
    at SourceMap.mark (c:/Users/user/dev/app/node_modules\babel\node_modules 
\babel-core\lib\babel\generation\source-map.js:65:9) 
    at CodeGenerator.print (c:/Users/user/dev/app/node_modules\babel\node_mo 
dules\babel-core\lib\babel\generation\index.js:236:16) 
    at NodePrinter.plain (c:/Users/user/dev/app/node_modules\babel\node_modu 
les\babel-core\lib\babel\generation\node\printer.js:16:27) 
    at CodeGenerator.ReturnStatement (c:/Users/user/dev/app/node_modules\bab 
el\node_modules\babel-core\lib\babel\generation\generators\statements.js:120:13) 

    at CodeGenerator.print c:/Users/user/dev/app/node_modules\babel\node_mo 
dules\babel-core\lib\babel\generation\index.js:238:22) 
    at NodePrinter.plain (c:/Users/user/dev/app/node_modules\babel\node_modu 
les\babel-core\lib\babel\generation\node\printer.js:16:27) 
    at CodeGenerator.printJoin (c:/Users/user/dev/app/node_modules\babel\nod 
e_modules\babel-core\lib\babel\generation\index.js:286:13) 
    at NodePrinter.sequence (c:/Users/user/dev/app/node_modules\babel\node_m 
odul 

es\babel-core\lib\babel\generation\node\printer.js:23:27) 

Согласно документам, похоже, что это должно сработать. Я пропустил что-то очевидное, или я должен сообщить об этом как об ошибке в babel?

ответ

2

Это был a bug in acorn-jsx, парсер JSX, который использует Babel. Рекомендуемое исправление будет:

rm -rf node_modules/babel && npm install 
+1

Я сожалею, я должен отметить, что я уже отдал свою папку node_modules, и схватил последнюю версию Вавилонского (5.6.3). Я попробовал еще раз, но все не изменилось. –

+0

Это определенно было для меня проблемой нисходящей зависимости, поэтому я рад видеть, что другие сообщают о подобных ошибках. Похоже, что [email protected] должен исправить эту проблему, но babel все еще тянет в 1.2.2 на моей коробке? Может быть, babel нужно привязать к [email protected]? –

+0

Можете ли вы посмотреть версию, имеющуюся в 'node_modules/babel/node_modules/babel-core/node_modules/acorn-jsx/package.json'? Это должно быть «1.0.3». У вас где-то есть кеш реестра NPM? – loganfsmyth