Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 反应路由器服务器端错误_Node.js_Express_Reactjs_React Router - Fatal编程技术网

Node.js 反应路由器服务器端错误

Node.js 反应路由器服务器端错误,node.js,express,reactjs,react-router,Node.js,Express,Reactjs,React Router,我正在尝试使我的客户端webapp同构。 我认为这是一种模式: 这是我的 server.js: var React = require('react'), express = require('express'), Router = require('react-router'), routes = require('./src/js/main'), path = require('path'), app = express(), port = 5555, bodyParser = requir

我正在尝试使我的客户端webapp同构。 我认为这是一种模式:

这是我的

server.js:

var React = require('react'),
express = require('express'),
Router = require('react-router'),
routes = require('./src/js/main'),
path = require('path'),
app = express(),
port = 5555,
bodyParser = require('body-parser');

// Make sure to include the JSX transpiler
require("node-jsx").install();

// Include static assets. Not advised for production
app.use(express.static(path.join(__dirname, 'dist')));
// Set view path
app.set('views', path.join(__dirname, 'views'));
// set up ejs for templating. You can use whatever
app.set('view engine', 'ejs');


// ...express config...

app.use(function(req, res, next) {
  var router = Router.create({location: req.url, routes: routes})
  router.run(function(Handler, state) {
    var reactHtml = React.renderToString(<Handler/>)
    return res.render('index.ejs', {reactOutput: reactHtml})
  })
})

app.listen(port);
console.log('Server is Up and Running at Port : ' + port);
var React=require('React'),
express=require('express'),
路由器=需要('react-Router'),
路由=需要('./src/js/main'),
path=require('path'),
app=express(),
端口=5555,
bodyParser=require('body-parser');
//确保包括JSX transpiler
需要(“节点jsx”).install();
//包括静态资产。不建议生产
使用(express.static(path.join(uu dirname,'dist'));
//设置视图路径
app.set('views',path.join('views');
//为模板设置ejs。你可以用任何东西
应用程序集(“查看引擎”、“ejs”);
//…快速配置。。。
应用程序使用(功能(请求、恢复、下一步){
var router=router.create({location:req.url,routes:routes})
run(函数(处理程序,状态){
var reactHtml=React.renderToString()
返回res.render('index.ejs',{reactOutput:reactHtml})
})
})
app.listen(端口);
log('服务器已启动并在端口:'+端口运行);
main.js:

var React = require('react');
var Router = require('react-router');
var Route = Router.Route;
var RouteHandler = Router.RouteHandler;
var Link = Router.Link;
var APPLICATION_ID = '',
    SECRET_KEY = '',
    VERSION = 'v1'; //default application version;
Backendless.initApp(APPLICATION_ID, SECRET_KEY, VERSION);



// wrapper
APP = require('./components/app').APP;

// pages
var Frontpage = require('./components/frontpage/app-frontpage'); // homepage
var NewEstate = require('./components/new-estate/app-newestate');
var NewEstateDetails = require('./components/new-estate/app-newestatedetails');
var Contacts = require('./components/static/app-contacts');
var About = require('./components/static/app-about');

var SecondEstate = require('./components/second-estate/app-secondestate');
var SecondEstateDetails = require('./components/second-estate/app-secondestatedetails');
var CommerceEstate = require('./components/commerce-estate/app-commerceestate');
var CommerceEstateDetails = require('./components/commerce-estate/app-commerceestatedetails');



var routes = (
  <Route handler={APP}>
    <Route handler={Frontpage}/>
    <Route name="NewEstate" ignoreScrollBehavior={true} handler={NewEstate}/>
    <Route name="NewEstateDetails" ignoreScrollBehavior={true} path="/NewEstate/:itemId" params={{routeType: "NewEstateDetails" }} handler={NewEstateDetails}/>
    <Route name="SecondEstate" ignoreScrollBehavior={true} handler={SecondEstate}/>
    <Route name="SecondEstateDetails" ignoreScrollBehavior={true} path="/SecondEstate/:itemId" params={{routeType: "SecondEstateDetails" }} handler={NewEstateDetails}/>
    <Route name="CommerceEstate" ignoreScrollBehavior={true} handler={CommerceEstate}/>
    <Route name="CommerceEstateDetails" ignoreScrollBehavior={true} path="/CommerceEstate/:itemId" params={{routeType: "CommerceEstateDetails" }} handler={NewEstateDetails}/>
    <Route name="Contacts" handler={Contacts}/>
    <Route name="About" handler={About}/>    
  </Route>
);

Router.run(routes, function (Handler) {
  React.render(<Handler/>, document.getElementById('main'));
});
var React=require('React');
var-Router=require('react-Router');
var-Route=路由器.Route;
var RouteHandler=Router.RouteHandler;
var-Link=路由器.Link;
var应用程序_ID=“”,
密钥=“”,
版本='v1'//默认应用程序版本;
initApp(应用程序ID、密钥、版本);
//包装纸
应用=要求('./组件/应用')。应用;
//页数
var Frontpage=require(“./components/Frontpage/app Frontpage”);//主页
var NewEstate=require(“./components/NewEstate/app NewEstate”);
var NewEstateDetails=require(“./components/newestate/app NewEstateDetails”);
var触点=需要('./组件/静态/应用触点');
var-About=require(“./components/static/app-About”);
var SecondEstate=需要(“./components/SecondEstate/app SecondEstate”);
var SecondEstateDetails=require(“./components/secondestate/app SecondEstateDetails”);
var CommerceEstate=require(“/组件/商业地产/应用商业地产”);
var CommerceEstateDetails=require('./组件/商业地产/应用程序CommerceEstateDetails');
变量路由=(
);
Router.run(路由、函数(处理程序){
React.render(,document.getElementById('main'));
});
和index.ejs:

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Балкит - Агентство недвижимости</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  <link rel="stylesheet" href="css/styles.css">
</head>
<body >
<div id="main"><%- reactOutput %><div class=""></div></div>

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyA7F9cOuVNV6_RRAdLowrz9elBbRuXFy2Y&libraries=drawing"></script>
<script src="js/scripts.js"></script>
<script src="js/main.js"></script>
</script>
</body>
</html>

Балкит - Агентство недвижимости
我正在尝试运行server.js,出现以下错误:

//web/react-balkit/server.js:28
    var reactHtml = React.renderToString(<Handler/>)
                                         ^
SyntaxError: Unexpected token <
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:935:3
//web/react-balkit/server.js:28
var reactHtml=React.renderToString()
^
SyntaxError:意外标记<
在模块处编译(Module.js:439:25)
在Object.Module.\u extensions..js(Module.js:474:10)
在Module.load(Module.js:356:32)
在Function.Module.\u加载(Module.js:312:12)
位于Function.Module.runMain(Module.js:497:10)
启动时(node.js:119:16)
在node.js:935:3
我已经尝试过修复它,但是我离这个模式越来越远,并且得到了更多的错误

require(“node jsx”).install()
插入将任何JSX转换为普通JS的中间件

但是,您需要一个JSX语法为的文件,然后才能包含该文件。与所有中间件一样,顺序非常重要

若要修复,请将其以相反的方式插入:

require(“node jsx”).install();
路由=需要('./src/js/main')

编辑:为服务器添加

您可以创建一个工厂来使用标准JS

app.use(function(req, res, next) {
  var router = Router.create({location: req.url, routes: routes})
  router.run(function(Handler, state) {
    var Element = React.createFactory(Handler);
    var reactHtml = React.renderToString(Element());
      return res.render('index.ejs', {reactOutput: reactHtml})
  });
});

我已经放置了
require(“node jsx”).install()在整个代码的开头。不幸的是,这没有帮助。我已检查:节点jsx^0.13.3安装正确。谢谢!看起来很管用!我还不能确定,因为我没有找到全局注入几个js库的方法。也许你知道?