2016-10-31 2 views
1

У меня есть основные server.js:Запуск узла server.js бросает ошибка синтаксиса

var express = require('express'); 
var path = require('path'); 
var port = process.env.PORT || 8080; 
var app = express(); 

app.use(express.static('src/client/')); 

app.get('/', (req, res) => { 
    res.sendFile(path.resolve(__dirname + '/src/client/index.html')) 
}); 

app.listen(port); 
console.log('server started'); 

однако у меня теперь есть среагировать-маршрутизации, которые я хочу импортировать, так что, когда браузер обновляется на сервере страница по-прежнему доступна.

Моя попытка до сих пор:

import express from 'express'; 
import path from 'path'; 
import React from 'react'; 
import { renderToString } from 'react-dom/server'; 
import { match, RouterContext } from 'react-router'; 
import routes from './src/client/app/config/routes.jsx'; 

let port = process.env.PORT || 8080; 
let app = express(); 

app.use(express.static('src/client/')); 

// app.get('/', (req, res) from> { 
// res.sendFile(path.resolve(__dirname + '/src/client/index.html')) 
// }); 

app.get('/', (req, res) => { 
    match(
    { routes, location: req.url }, 
    (err, redirectLocation, renderProps) => { 

     // in case of error display the error message 
     if (err) { 
     return res.status(500).send(err.message); 
     } 

     // in case of redirect propagate the redirect to the browser 
     if (redirectLocation) { 
     return res.redirect(302, redirectLocation.pathname + redirectLocation.search); 
     } 

     // generate the React markup for the current route 
     let markup; 
     if (renderProps) { 
     // if the current route matched we have renderProps 
     markup = renderToString(<RouterContext {...renderProps}/>); 
     } 
     // else { 
     // // otherwise we can render a 404 page 
     // markup = renderToString(<NotFoundPage/>); 
     // res.status(404); 
     // } 

     // render the index template with the embedded React markup 
     return res.render(path.resolve(__dirname + '/src/client/index.html')); 
    } 
); 
}); 

app.listen(port); 
console.log('server started'); 

, но когда я бегу «узел server.js» Я получаю следующее сообщение об ошибке:

(function (exports, require, module, __filename, __dirname) { import express from 'express'; 
                   ^^^^^^ 
SyntaxError: Unexpected reserved word 
+0

'import' - ключевое слово ES2015, которое NodeJS не распознает. Вам придется использовать прерванную версию этого файла. –

+0

, но этот «app.get ('/', (req, res) => {" (функция стрелок) уже был на моем предыдущем сервере.js, что означает, что ES2015 можно использовать – Alex

+2

Вправо, поэтому вам нужно будет запустить выложенная версия этого файла. У узла была ранняя поддержка толстых стрелок, вам приходилось работать с «--harmony», а затем, в какой-то момент, я думаю, что это был родной, не помните. «import» вы будете необходимо перевести с вашей версией Node, точно так же, как указывает ошибка. –

ответ

0

Просто обо всем в ES6 работает в новых версиях узел, за исключением ключевого слова import/export. Вам придется перевести его на ES5 с помощью gulp, webpack и т. Д.

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