gpt4 book ai didi

node.js - 在 Node.js 中导入 React 会抛出 SyntaxError : Unexpected token export

转载 作者:太空宇宙 更新时间:2023-11-03 21:54:25 25 4
gpt4 key购买 nike

我正在尝试按照此示例使用 Node.js 和 React 实现 SSR https://github.com/babel/example-node-server正如 Babel 官方文档中所建议的那样 http://babeljs.io/docs/usage/cli/#babel-node

对于开发,我使用babel-node;对于生产,我想使用 babel 转译我的服务器并使用 node 运行它:

package.json

"scripts": {
"start": "node ./dist/server/index.js",
"dev:server": "nodemon ./src/server/index.js -x babel-node",
"build:server": "babel ./src/server -d ./dist/server --copy-files -s inline"
},
"babel": {
"presets": [
"env",
"react",
"stage-2"
],
"plugins": [
"transform-decorators-legacy"
]
}

服务器是用ES6语法编写的:

src/server/index.js

import 'babel-polyfill'
import './config'
import Express from 'express'
import bootstrap from './bootstrap'

const app = Express()
bootstrap(app)

export default app

然后在某些 route ,我导入 React 组件以根据请求将其渲染为 HTML:

src/server/routes/admin.js

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.

服务器尝试导入React组件时抛出错误

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

SyntaxError: Unexpected token export

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

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

dist/server/routes/admin.js

var _store = require('../../../src/admin/store');

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

编辑

Babel 6 CLI: Unexpected token export? 不同

最佳答案

那是因为您仅转译 ./src/server 而不是 ./src/admin。然后在 ./src/server 中,您有 Babel 未翻译的 export 关键字,并且 Node 不支持 export 关键字 - 看看为什么,查看这些答案:

您需要转译所有使用 Node 本身不支持的语法的代码,而不仅仅是其中的一些代码。

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

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

当然,除了 serveradmin 之外,不知道 ./src 中还有什么,很难为您提供具体的解决方案 - 但是这是一个很好的起点。

关于node.js - 在 Node.js 中导入 React 会抛出 SyntaxError : Unexpected token export,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44923540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com