Using babel-preset-react-app with @babel/register

Viewed 603

I'm trying SSR with create-react-app without ejecting.

In this repository, using react-app presets with changes like below fails.

diff --git a/server/index.js b/server/index.js
index 9b0deea..b5e5d5f 100644
--- a/server/index.js
+++ b/server/index.js
@@ -30,7 +30,7 @@ register(ignoreStyles.DEFAULT_EXTENSIONS, (mod, filename) => {
 require('@babel/polyfill');
 require('@babel/register')({
   ignore: [/\/(build|node_modules)\//],
-  presets: ['@babel/preset-env', '@babel/preset-react'],
+  presets: ['@babel/preset-env', 'react-app'],
   plugins: [
     '@babel/plugin-syntax-dynamic-import',
     'dynamic-import-node',

Error is

/xxxxxx/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js:1
(function (exports, require, module, __filename, __dirname) { import defineProperty from "./defineProperty";
                                                                     ^^^^^^^^^^^^^^

SyntaxError: Unexpected identifier
    at new Script (vm.js:80:7)
    at createScript (vm.js:264:10)
    at Object.runInThisContext (vm.js:316:10)
    at Module._compile (internal/modules/cjs/loader.js:670:28)
    at Module._compile (/xxxxxx/node_modules/pirates/lib/index.js:83:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:718:10)
    at Object.newLoader [as .js] (/xxxxxx/node_modules/pirates/lib/index.js:88:7)
    at Module.load (internal/modules/cjs/loader.js:605:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:544:12)
    at Function.Module._load (internal/modules/cjs/loader.js:536:3)

It seems that this issue is related, but I cannot get any hint or pointer there.

I'd like to use react-app presets since typescript stuff and NODE_PATH seems to depend on that.

How can I use babel-presets-react-app in SSR?

1 Answers
require('babel-register')({ ignore: /\/(build|node_modules)\//, presets: ['react-app'] })
Related