2015-08-18 4 views
2

В маршрутизаторе моего приложения NodeJS я хочу отобразить приложение-ответ. Поскольку он не просматривается (и там реактивирован), он возвращает unexpected token < ошибки при построении. Я нашел, если я require("node-jsx").install(), он не возвращает мне эту ошибку. Но node-jsx устарел. Есть ли способ построить проект, не требуя его?Избавление от node-jsx

var JSX = require('node-jsx').install(),//as we don't reactify it while building 
    React = require('react'), 
    Board = React.createFactory(require('../components/board')), 
    DataStore = require('../store/store'); 


    var router = require('express').Router(); 

    router.get('/', function(req, res) { 
     var initialState = {'users': DataStore.getUsers()}; 
     var markup = React.renderToString(
      Board(initialState) 
     ); 
     res.render('board', { 
      markup: markup, 
      state: JSON.stringify(initialState), 
      layout: 'boardLayout' 
     }); 
    }); 

    module.exports = router; 
+0

Если ваш компонент платы находится в jsx, его необходимо преобразовать в js, прежде чем он может быть обработан реакцией. Является ли плата jsx-файлом? – Mark

+0

Да, на самом деле это файл jsx, но с расширением '.js'. –

ответ

3

узел-JSX устарел в пользу babel. Вместо require('node-jsx').install(); вы можете использовать require('babel-register');.

+0

Еще в 2015 году (когда был написан оригинальный ответ), 'babel/register' был верным. API, очевидно, были обновлены с тех пор, и я обновил свой ответ. Спасибо за указание на это. – Mark

+0

Извините за кричащую часть, я был с другом, и это была внутренняя шутка. лол – Jackstine

0

Поскольку babel 6 выше ответ не будет работать. Вместо этого используйте регистр babel.

Рекомендуется не использовать эту установку в производстве. Для производства вам необходимо спрятать все файлы и использовать что-то в строках узла server.js.

Смежные вопросы