我想预编译我的NodeJs应用程序(具有SSR for React的服务器)进行 生产环境 . 对于开发我在index.js中使用它:

require('ignore-styles');
require('babel-register')({
  ignore: /\/(build|node_modules)\//,
  presets: ['env', 'react-app']
});

一切都很好,但我读了这篇文章:https://github.com/babel/babel/issues/5851和我'm confused now. Is it good solution or not ? I don' t在开发服务器期间使用任何捆绑器 . 我不喜欢webpack等 . 要构建客户端,我使用create-react-app .

我试图创建捆绑服务器3天,但我已经投降了 .

我 Build 的命令:

npm run build:clean && NODE_ENV=development babel -d ./build --ignore ,node_modules/**,client/public/**,client/theme/**,server/client/**/*.js ./ -s

还有一些babel实验和结果:

.babelrc

{
  "presets": [
    "env",
    "react-app"
  ]
}

要么

{
  "presets": [
    "react",
    "es2015",
    "stage-0"
  ]
}

构建正常,但运行后节点./build/server/index.js

module.js:557 throw err; ^错误:无法在Function.Module._resolveFilename(module.js:555:15)中找到模块'./style.css'

.babelrc:

{
  "presets": [
    "env",
    "react-app"
  ],
  "env": {
    "development": {
      "plugins": [
        [
          "babel-plugin-transform-require-ignore",
          {
            "extensions": [
              ".css"
            ]
          }
        ]
      ]
    }
  }
}

Result:

I'v got: PROJECT-PATH/src/node_modules/loaders.css/loaders.css:14
@-webkit-keyframes scale { ^

SyntaxError: Invalid or unexpected token

.babelrc

{
  "presets": ["es2015", "stage-2"]
}

Result:

Result:
SyntaxError: client/src/App.js: Unexpected token (18:2)
  16 | const App = () => {
  17 |  return (
> 18 |          <Provider store={store}>
     |          ^
  19 |                  <BrowserRouter>
  20 |                          <AppWrapper/>
  21 |                  </BrowserRouter>

.babelrc

{
  "presets": [
    "env",
    "react"
  ]
}

Result:

SyntaxError: client/src/components/HamburgerMenu/index.js: Unexpected token (9:12)
   7 | 
   8 | class HamburgerMenu extends Component {
>  9 |  renderMenu = (links) => {
     |             ^
  10 |          const { onItemClick } = this.props;
  11 |          return (
  12 |                  links.map((link, index) => {