webpack刚开始尝试运行我自己的服务器(node server.js),但我得到了这样的消息:
$ node server.js
/path/to/server.js:3
import path from 'path'
^^^^^^
SyntaxError: Unexpected token import
at Object.exports.runInThisContext (vm.js:76:16)
at Module._compile (module.js:513:28)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Module.runMain (module.js:575:10)
at run (bootstrap_node.js:352:7)
at startup (bootstrap_node.js:144:9)
at bootstrap_node.js:467:3My server.js:
require("babel-register");
import path from 'path'
import Express from 'express'
import React from 'react'
import { createStore } from 'redux'
import { Provider } from 'react-redux'
import counterApp from './reducers'
import App from './containers/App'
import { renderToString } from 'react-dom/server'
const app = Express()
const port = 3000
// This is fired every time a request is made
app.use(handleRender)
function handleRender(req, res) {
// Create a new Redux store instance
const store = createStore(counterApp) // this is taken from './reducers'
// Render the component to a string
const html = renderToString(
<Provider store={store}> // Needs an import?
<App /> // this is defined in './containers/...'
</Provider>
)
// Grab the initial state from our Redux store
const preloadedState = store.getState()
// Send the rendered page back to the client
res.send(renderFullPage(html, preloadedState))
}
// Yet to be defined...
function renderFullPage(html, preloadedState) {
return
<!doctype html>
<html>
<head>
<title>Paulos3000 Redux Universal Example</title>
</head>
<body>
<div id='root'>${html}</div>
<script>
window.__PRELOADED_STATE__ = ${JSON.stringify(preloadedState)}
</script>
<script src='/static/bundle.js'></script>
</body>
</html>
}
app.listen(port)有人能看出我的代码有问题吗?如果您需要我提供更多的信息,请告诉我(因为我不知道问题的来源,所以不确定应该包括什么)。
更新:
SyntaxError: /path/to/server.js: Unexpected token (25:6)
23 |
24 | const html = renderToString(
> 25 | <Provider>
| ^
26 | <App />
27 | </Provider>
28 | )发布于 2016-11-03 19:48:40
根据Node版本的不同,它不支持import语法。
尝试使用通过require()导入的方法:
const path = require('path').default发布于 2016-11-03 19:52:37
babel-register不适用于您使用它的文件,只适用于您随后使用的文件( require() )。
例如:
// bootstrap.js
require("babel-register");
require("./server");
// server.js
import path from 'path'
import Express from 'express'
import React from 'react'
...并以以下方式启动服务器:
$ node bootstrap.js这确实假设您已经有了一个有效的Babel设置。如果没有,请在与.babelrc相同的目录中创建一个名为server.js的文件,其中包含以下内容:
{
"presets": ["es2015", "react"]
}并安装预置模块:
$ npm i babel-preset-es2015 babel-preset-reacthttps://stackoverflow.com/questions/40409999
复制相似问题