尝试呈现React SSR时,我的Express应用程序中缺少什么?

时间:2019-01-07 16:05:44

标签: node.js reactjs express babeljs serverside-rendering

在这个问题上,我疯了。我不知道自己想念什么。

我的设置如下:

  • 使用Express Generator创建的Express服务器
  • 使用CRA创建的反应应用

我希望能够对我的React脚本进行SSR。

文件夹结构是这样的:

src/
    bin/
        www
    routes/
        index.js
    app.js
    .babelrc
    client/ (React app files)
        src/
            App.js

我在package.json中使用以下脚本启动Express服务器:

nodemon --exec babel-node ./src/bin/www

我尝试通过以下操作在routes/index.js中渲染React组件:

import React from 'react'
import { renderToString } from 'react-dom/server'
import App from '../client/src/App';
...

.babelrc看起来像这样:

{
    "presets": ["@babel/preset-env", "@babel/preset-react"]
}

在文件/bin/www中,我放置了以下内容(位于顶部):

require("@babel/register")({
    presets: ["@babel/preset-react"]
})
...

但是我能脱身的是.....

SyntaxError: Unexpected token import

它指向:

/srv/app/customer-server/src/client/src/App.js:1
(function (exports, require, module, __filename, __dirname) { import React, { Component } from 'react';

我在这里想念什么?我会为这种设置做些不可能的事吗?

谢谢

1 个答案:

答案 0 :(得分:0)

答案是我使用的是带有已装入卷的Docker,这会导致错误,在我弄清楚这一点后一切正常。