Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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中导入React抛出语法错误:意外的令牌导出_Node.js_Reactjs_Babeljs_Server Side Rendering_Babel Node - Fatal编程技术网

在Node.js中导入React抛出语法错误:意外的令牌导出

在Node.js中导入React抛出语法错误:意外的令牌导出,node.js,reactjs,babeljs,server-side-rendering,babel-node,Node.js,Reactjs,Babeljs,Server Side Rendering,Babel Node,我正试图用Node.js实现SSR,并按照巴贝尔官方文档中的建议,按照这个示例进行反应 对于开发,我使用的是babel节点;对于生产,我希望使用babel传输我的服务器,并使用节点运行它: package.json 服务器使用ES6语法编写: src/server/index.js 然后在某些路径中,我导入我的React组件,以便根据请求将其呈现为HTML: src/server/routes/admin.js 服务器尝试导入React组件时引发错误 ./src/admin/store/inde

我正试图用Node.js实现SSR,并按照巴贝尔官方文档中的建议,按照这个示例进行反应

对于开发,我使用的是
babel节点
;对于生产,我希望使用babel传输我的服务器,并使用
节点运行它

package.json 服务器使用ES6语法编写:

src/server/index.js 然后在某些路径中,我导入我的React组件,以便根据请求将其呈现为HTML:

src/server/routes/admin.js 服务器尝试导入React组件时引发错误

./src/admin/store/index.js:11
export default configureStore
^^^^^^

SyntaxError: Unexpected token export
我尝试在服务器中使用
babel register
,它可以工作,但不建议在生产模式中使用它,所以我宁愿不这样做

此外,在检查构建的服务器代码时,我发现:

dist/server/routes/admin.js 这意味着它仍在引用
src
文件夹。理想情况下,我希望以某种方式将这些模块合并到构建的服务器代码中,这样我就可以安全地从生产环境中删除
src
文件夹,只留下
dist

编辑

不同,这是因为您只传输
/src/server
,而不是
/src/admin
。然后在
/src/server
中,您有
导出
关键字未被巴贝尔翻译,并且节点不支持导出关键字-要了解原因,请查看这些答案:

您需要传输所有使用Node本机不支持的语法的代码,而不仅仅是其中的一部分

将这样的脚本添加到package.json可能会有所帮助,具体取决于
/src
/dist
的组织方式:

"build:all": "babel ./src -d ./dist --copy-files -s inline"

当然,除了
服务器
管理员
之外,不知道您在
/src
中拥有什么,很难给您提供一个具体的解决方案-但这是一个很好的开始方向。

不确定,请检查这可能解决您的问题@MayankShukla不幸的是,否:(谢谢,这正是我在配置中缺少的内容。在
/src
中有
服务器
,两个react入口点(一个用于
客户端
,一个用于
管理
)和
样式
,因此我还在build命令中添加了
--ignore./src/styles
,效果非常好。)
import { Router } from 'express'
import React from 'react'
import createHistory from 'history/createMemoryHistory'
import { renderToString } from 'react-dom/server'
import { Provider } from 'react-redux'
import { StaticRouter, matchPath } from 'react-router'
import configureStore from '../../../src/admin/store'
import routes from '../../../src/admin/routes'
import Root from '../../../src/admin/containers/Root'
// etc.
./src/admin/store/index.js:11
export default configureStore
^^^^^^

SyntaxError: Unexpected token export
var _store = require('../../../src/admin/store');
"build:all": "babel ./src -d ./dist --copy-files -s inline"