serverless-webpack icon indicating copy to clipboard operation
serverless-webpack copied to clipboard

Serverless-webpack dependency error: @babel/runtime.

Open Vadorequest opened this issue 4 years ago • 3 comments

This is a (Bug Report)

Description

I'm upgrading my Next.js app which runs on AWS Lambda using serverless-offline and serverless-webpack plugins. The upgrade from Next 5 to Next 8 forces me to upgrade my babel/webpack dependencies, but it's very hard to get it right.

Currently, my frontend app (:3001) works alright (just next alone), but my serverless-offline app fails to start due to transpilation issues (AFAICT).

Here are the logs when I try to run serverless package

Built at: 2019-07-06 15:51:37
                                                                   Asset       Size  Chunks             Chunk Names
                                                          .next/BUILD_ID   21 bytes          [emitted]  
                                               .next/build-manifest.json   1.89 KiB          [emitted]  
                                   .next/cache/next-minifier/a1584614574     83 KiB          [emitted]  
                                   .next/cache/next-minifier/a2254995351   43.6 KiB          [emitted]  
                                   .next/cache/next-minifier/a2670132923   1.08 KiB          [emitted]  
                                    .next/cache/next-minifier/a313086635    263 KiB          [emitted]  
                                   .next/cache/next-minifier/a3262333633    258 KiB          [emitted]  
                                   .next/cache/next-minifier/a3683707078   1.48 KiB          [emitted]  
                                   .next/cache/next-minifier/a3765160059    119 KiB          [emitted]  
                                   .next/cache/next-minifier/a3982953774    118 KiB          [emitted]  
                                   .next/cache/next-minifier/a4133317083  249 bytes          [emitted]  
                                     .next/cache/next-minifier/a47366173    679 KiB          [emitted]  
                                     .next/cache/next-minifier/a48340472    2.5 KiB          [emitted]  
                                    .next/cache/next-minifier/a506587114   17.8 KiB          [emitted]  
                                      .next/react-loadable-manifest.json    2 bytes          [emitted]  
                                                      .next/records.json  308 bytes          [emitted]  
                                        .next/server/pages-manifest.json  687 bytes          [emitted]  
                                               .next/server/records.json  790 bytes          [emitted]  
                                        .next/server/ssr-module-cache.js  100 bytes          [emitted]  
                           .next/server/static/development/pages/_app.js   26.8 KiB          [emitted]  
                       .next/server/static/development/pages/_app.js.map   18.7 KiB          [emitted]  
                      .next/server/static/development/pages/_document.js     94 KiB          [emitted]  
                  .next/server/static/development/pages/_document.js.map   75.3 KiB          [emitted]  
                         .next/server/static/development/pages/_error.js   22.3 KiB          [emitted]  
                     .next/server/static/development/pages/_error.js.map   15.3 KiB          [emitted]  
                 .next/server/static/hg9g5Anw5eSkKDY-GZt1K/pages/_app.js     16 KiB          [emitted]  
            .next/server/static/hg9g5Anw5eSkKDY-GZt1K/pages/_document.js   70.1 KiB          [emitted]  
               .next/server/static/hg9g5Anw5eSkKDY-GZt1K/pages/_error.js   13.3 KiB          [emitted]  
              .next/server/static/hg9g5Anw5eSkKDY-GZt1K/pages/console.js    252 KiB          [emitted]  
                .next/server/static/hg9g5Anw5eSkKDY-GZt1K/pages/error.js     16 KiB          [emitted]  
                .next/server/static/hg9g5Anw5eSkKDY-GZt1K/pages/index.js    207 KiB          [emitted]  
               .next/server/static/hg9g5Anw5eSkKDY-GZt1K/pages/school.js    217 KiB          [emitted]  
.next/server/static/hg9g5Anw5eSkKDY-GZt1K/pages/school/chatbot-iframe.js    277 KiB          [emitted]  
       .next/server/static/hg9g5Anw5eSkKDY-GZt1K/pages/school/chatbot.js    276 KiB          [emitted]  
     .next/server/static/hg9g5Anw5eSkKDY-GZt1K/pages/school/simulator.js    247 KiB          [emitted]  
                                                .next/static/chunks/0.js  424 bytes          [emitted]  
                                            .next/static/chunks/0.js.map   99 bytes          [emitted]  
                     .next/static/chunks/commons.6af4d4fafac23e953b92.js    661 KiB          [emitted]  
                .next/static/development/dll/dll_54b53418450dd7c1a515.js    912 KiB          [emitted]  
                                  .next/static/development/pages/_app.js    357 KiB          [emitted]  
                              .next/static/development/pages/_app.js.map    280 KiB          [emitted]  
                                .next/static/development/pages/_error.js    188 KiB          [emitted]  
                            .next/static/development/pages/_error.js.map    105 KiB          [emitted]  
                        .next/static/hg9g5Anw5eSkKDY-GZt1K/pages/_app.js   2.43 KiB          [emitted]  
                      .next/static/hg9g5Anw5eSkKDY-GZt1K/pages/_error.js  224 bytes          [emitted]  
                     .next/static/hg9g5Anw5eSkKDY-GZt1K/pages/console.js    257 KiB          [emitted]  
                       .next/static/hg9g5Anw5eSkKDY-GZt1K/pages/error.js   1.03 KiB          [emitted]  
                       .next/static/hg9g5Anw5eSkKDY-GZt1K/pages/index.js   80.4 KiB          [emitted]  
                      .next/static/hg9g5Anw5eSkKDY-GZt1K/pages/school.js   42.5 KiB          [emitted]  
       .next/static/hg9g5Anw5eSkKDY-GZt1K/pages/school/chatbot-iframe.js    116 KiB          [emitted]  
              .next/static/hg9g5Anw5eSkKDY-GZt1K/pages/school/chatbot.js    115 KiB          [emitted]  
            .next/static/hg9g5Anw5eSkKDY-GZt1K/pages/school/simulator.js    250 KiB          [emitted]  
                                             .next/static/runtime/amp.js    145 KiB          [emitted]  
                                         .next/static/runtime/amp.js.map    104 KiB          [emitted]  
                       .next/static/runtime/main-f01426cd49f054fbbbde.js   17.4 KiB          [emitted]  
                                            .next/static/runtime/main.js    813 KiB          [emitted]  
                                        .next/static/runtime/main.js.map    745 KiB          [emitted]  
                    .next/static/runtime/webpack-a79426b5e11f0ba5879d.js   1.46 KiB          [emitted]  
                                         .next/static/runtime/webpack.js   33.8 KiB          [emitted]  
                                     .next/static/runtime/webpack.js.map   35.1 KiB          [emitted]  
 credentials/staging.demo-dialogflow-students-solutions-credentials.json   2.33 KiB          [emitted]  
                                          src/functions/server/server.js   70.8 KiB       0  [emitted]  src/functions/server/server
                                      src/functions/server/server.js.map    210 KiB       0  [emitted]  src/functions/server/server
Entrypoint src/functions/server/server = src/functions/server/server.js src/functions/server/server.js.map
 [1] external "lodash.get" 42 bytes {0} [built]
 [3] external "lodash.map" 42 bytes {0} [built]
 [4] external "source-map-support/register" 42 bytes {0} [built]
 [5] external "@babel/runtime-corejs2/core-js/json/stringify" 42 bytes {0} [built]
 [6] external "@babel/runtime/regenerator" 42 bytes {0} [built]
 [7] external "@unly/utils-simple-logger" 42 bytes {0} [built]
 [8] ./src/constants.js 1.6 KiB {0} [built]
[10] external "@babel/runtime-corejs2/helpers/esm/asyncToGenerator" 42 bytes {0} [built]
[15] external "raven" 42 bytes {0} [built]
[37] external "aws-serverless-express" 42 bytes {0} [built]
[45] external "serverless-sentry-lib" 42 bytes {0} [built]
[74] multi ./node_modules/@sentry/webpack-plugin/src/sentry-webpack.module.js ./src/functions/server/server.js 40 bytes {0} [built]
[75] ./node_modules/@sentry/webpack-plugin/src/sentry-webpack.module.js 166 bytes {0} [built]
[76] ./src/functions/server/server.js 723 bytes {0} [built]
[77] ./src/functions/server/app.js 13 KiB {0} [built]
    + 64 hidden modules

WARNING in ./src/functions/dialogflow/OAuthProxy.js 88:25-53
"export 'jsonToStructProto' (imported as 'structjson') was not found in './structjson'
 @ ./src/functions/server/app.js
 @ ./src/functions/server/server.js
 @ multi ./node_modules/@sentry/webpack-plugin/src/sentry-webpack.module.js ./src/functions/server/server.js

WARNING in ./src/functions/server/app.js 31:23-42
"export 'publicRuntimeConfig' was not found in '../../../next.runtimeConfig'
 @ ./src/functions/server/server.js
 @ multi ./node_modules/@sentry/webpack-plugin/src/sentry-webpack.module.js ./src/functions/server/server.js

WARNING in ./src/functions/server/app.js 30:23-42
"export 'serverRuntimeConfig' was not found in '../../../next.runtimeConfig'
 @ ./src/functions/server/server.js
 @ multi ./node_modules/@sentry/webpack-plugin/src/sentry-webpack.module.js ./src/functions/server/server.js
Serverless: Invoke webpack:package
Serverless: WARNING: Could not determine version of module @babel/runtime-corejs2
Serverless: WARNING: Could not determine version of module @babel/runtime-corejs2
Serverless: ERROR: Runtime dependency '@babel/runtime' found in devDependencies. Move it to dependencies or use forceExclude to explicitly exclude it.
 
  Serverless Error ---------------------------------------
 
  Serverless-webpack dependency error: @babel/runtime.
 
  Stack Trace --------------------------------------------
 
ServerlessError: Serverless-webpack dependency error: @babel/runtime.
    at _.forEach.module (/Users/vadorequest/dev/loan-advisor/node_modules/serverless-webpack/lib/packExternalModules.js:115:17)
    at arrayEach (/Users/vadorequest/dev/loan-advisor/node_modules/lodash/lodash.js:516:11)
    at Function.forEach (/Users/vadorequest/dev/loan-advisor/node_modules/lodash/lodash.js:9344:14)
    at ServerlessWebpack.getProdModules (/Users/vadorequest/dev/loan-advisor/node_modules/serverless-webpack/lib/packExternalModules.js:75:5)
    at _.uniq._.flatMap.compileStats (/Users/vadorequest/dev/loan-advisor/node_modules/serverless-webpack/lib/packExternalModules.js:242:37)
    at arrayMap (/Users/vadorequest/dev/loan-advisor/node_modules/lodash/lodash.js:639:23)
    at map (/Users/vadorequest/dev/loan-advisor/node_modules/lodash/lodash.js:9556:14)
    at Function.flatMap (/Users/vadorequest/dev/loan-advisor/node_modules/lodash/lodash.js:9259:26)
    at packager.getProdDependencies.then.dependencyGraph (/Users/vadorequest/dev/loan-advisor/node_modules/serverless-webpack/lib/packExternalModules.js:237:47)
From previous event:
    at PluginManager.invoke (/Users/vadorequest/dev/loan-advisor/node_modules/serverless/lib/classes/PluginManager.js:408:22)
    at PluginManager.spawn (/Users/vadorequest/dev/loan-advisor/node_modules/serverless/lib/classes/PluginManager.js:426:17)
    at ServerlessWebpack.BbPromise.bind.then.then.then (/Users/vadorequest/dev/loan-advisor/node_modules/serverless-webpack/index.js:102:51)
    at runCallback (timers.js:810:20)
    at tryOnImmediate (timers.js:768:5)
    at processImmediate [as _immediateCallback] (timers.js:745:5)
 
  Get Support --------------------------------------------
     Docs:          docs.serverless.com
     Bugs:          github.com/serverless/serverless/issues
     Issues:        forum.serverless.com
 
  Your Environment Information ---------------------------
     OS:                     darwin
     Node Version:           8.12.0
     Serverless Version:     1.40.0

Additional Data

Webpack Version: 4.35.2

Babel Core Version: "@babel/core": "7.5.0"

Babel Loader Version: "babel-loader": "8.0.6"

Please tell us about your environment: OSX 10.x

Current behavior: Compilation fails at runtime

Here are my scripts for starting my app locally:

    "start": "yarn sls:dotenv && cross-env-shell 'concurrently -p '{name}' -n 'client,server' -c 'gray.bgWhite,yellow.bgBlue' \"yarn start:client\" \"yarn start:server\"'",
    "start:client": "NODE_ENV=development GROUP_NAME=${GROUP_NAME:-demo}; GROUP_NAME=$GROUP_NAME next -p 3001",
    "start:server": "NODE_ENV=development GROUP_NAME=${GROUP_NAME:-demo}; GROUP_NAME=$GROUP_NAME serverless offline start --dontPrintOutput",

The clients runs successfully, but the server crashes.

When I start my app using yarn start, here are the logs:

{
"errorMessage": "Error while loading server",
"errorType": "SyntaxError",
"stackTrace": [
"/Users/vadorequest/dev/loan-advisor/node_modules/@babel/runtime-corejs2/helpers/esm/asyncToGenerator.js:1",
"(function (exports, require, module, __filename, __dirname) { import _Promise from \"../../core-js/promise\";",
"^^^^^^",
"",
"SyntaxError: Unexpected token import",
"at createScript (vm.js:80:10)",
"at Object.runInThisContext (vm.js:139:10)",
"at Module._compile (module.js:616:28)",
"at Object.Module._extensions..js (module.js:663:10)",
"at Module.load (module.js:565:32)",
"at tryModuleLoad (module.js:505:12)",
"at Function.Module._load (module.js:497:3)",
"at Module.require (module.js:596:17)",
"at require (internal/module.js:11:18)",
"at Object.<anonymous> (/Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:3074)",
"at n (/Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:220)",
"at Module.<anonymous> (/Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:67842)",
"at Module.<anonymous> (/Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:72269)",
"at n (/Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:220)",
"at Module.<anonymous> (/Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:67459)",
"at n (/Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:220)",
"at Object.SENTRY_RELEASE.id (/Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:67121)",
"at n (/Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:220)",
"at /Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:1019",
"at Object.<anonymous> (/Users/vadorequest/dev/loan-advisor/.webpack/service/src/functions/server/server.js:1:1029)",
"at Module._compile (module.js:652:30)",
"at Object.Module._extensions..js (module.js:663:10)",
"at Module.load (module.js:565:32)",
"at tryModuleLoad (module.js:505:12)",
"at Function.Module._load (module.js:497:3)",
"at Module.require (module.js:596:17)",
"at require (internal/module.js:11:18)",
"at Object.createHandler (/Users/vadorequest/dev/loan-advisor/node_modules/serverless-offline/src/functionHelper.js:192:17)",
"at handler (/Users/vadorequest/dev/loan-advisor/node_modules/serverless-offline/src/index.js:609:40)",
"at Object.internals.handler (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/handler.js:101:51)",
"at request._protect.run (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/handler.js:32:23)",
"at module.exports.internals.Protect.internals.Protect.run (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/protect.js:60:12)",
"at exports.execute (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/handler.js:26:22)",
"at each (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/request.js:401:16)",
"at iterate (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:36:13)",
"at done (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:28:25)",
"at module.exports.internals.Auth.internals.Auth._authenticate (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/auth.js:222:16)",
"at internals.Auth.authenticate (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/auth.js:197:17)",
"at each (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/request.js:401:16)",
"at iterate (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:36:13)",
"at done (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:28:25)",
"at request.connection.states.parse (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/route.js:314:20)",
"at Items.serial (/Users/vadorequest/dev/loan-advisor/node_modules/statehood/lib/index.js:250:16)",
"at done (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:31:25)",
"at Items.serial (/Users/vadorequest/dev/loan-advisor/node_modules/statehood/lib/index.js:190:20)",
"at iterate (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:36:13)",
"at done (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:28:25)",
"at Items.serial (/Users/vadorequest/dev/loan-advisor/node_modules/statehood/lib/index.js:190:20)",
"at iterate (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:36:13)",
"at done (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:28:25)",
"at Items.serial (/Users/vadorequest/dev/loan-advisor/node_modules/statehood/lib/index.js:190:20)",
"at iterate (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:36:13)",
"at done (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:28:25)",
"at Items.serial (/Users/vadorequest/dev/loan-advisor/node_modules/statehood/lib/index.js:190:20)",
"at iterate (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:36:13)",
"at done (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:28:25)",
"at Items.serial (/Users/vadorequest/dev/loan-advisor/node_modules/statehood/lib/index.js:190:20)",
"at iterate (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:36:13)",
"at done (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:28:25)",
"at Items.serial (/Users/vadorequest/dev/loan-advisor/node_modules/statehood/lib/index.js:190:20)",
"at iterate (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:36:13)",
"at done (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:28:25)",
"at Items.serial (/Users/vadorequest/dev/loan-advisor/node_modules/statehood/lib/index.js:190:20)",
"at iterate (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:36:13)",
"at Object.exports.serial (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:39:9)",
"at exports.Definitions.internals.Definitions.internals.Definitions.parse (/Users/vadorequest/dev/loan-advisor/node_modules/statehood/lib/index.js:164:11)",
"at internals.state (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/route.js:295:31)",
"at each (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/request.js:401:16)",
"at iterate (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:36:13)",
"at Object.exports.serial (/Users/vadorequest/dev/loan-advisor/node_modules/items/lib/index.js:39:9)",
"at internals.Request._lifecycle (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/request.js:404:18)",
"at internals.Request._match (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/request.js:381:17)",
"at internals.Request._execute (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/request.js:335:21)",
"at Domain.request._protect.enter (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/connection.js:275:25)",
"at Domain.run (domain.js:242:14)",
"at module.exports.internals.Protect.internals.Protect.enter (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/protect.js:76:17)",
"at Server.<anonymous> (/Users/vadorequest/dev/loan-advisor/node_modules/hapi/lib/connection.js:273:30)",
"at emitTwo (events.js:126:13)",
"at Server.emit (events.js:214:7)",
"at parserOnIncoming (_http_server.js:619:12)"
]
}

.babelrc

{
  "plugins": [
    "source-map-support"
  ],
  "presets": [
    [
      "next/babel",
      {
        "styled-jsx": {
          "optimizeForSpeed": true,
          "vendorPrefixes": true,
          "sourceMaps": true,
          "plugins": [
            "styled-jsx-plugin-sass"
          ]
        }
      }
    ]
  ]
}

webpack.config.js

module.exports = {
  entry: slsw.lib.entries,
  target: 'node',
  mode: process.env.NODE_ENV === 'development' ? 'development' : 'production',

  // Necessary for __dirname and __filename to work correctly when bundling with Webpack for the dev environment.
  // XXX See https://github.com/webpack/webpack/issues/1599
  node: {
    __dirname: true,
    __filename: true,
    // fs: 'empty',
    // module: "empty",
  },
  plugins,
  // Generate sourcemaps for proper error messages
  devtool: 'source-map',
  // We use webpack-node-externals to excludes all node deps. (like aws-sdk)
  // You can manually set the externals too.
  externals: [nodeExternals()],
  // Run babel on all .js files and skip those in node_modules
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: __dirname,
        exclude: /node_modules/,
      },
    ],
  },
};

Dependencies:

"devDependencies": {
    "@babel/core": "7.5.0",
    "babel-loader": "8.0.6",
    "babel-plugin-source-map-support": "2.0.1",
    "copy-webpack-plugin": "4.4.2",
    "serverless": "1.40.0",
    "serverless-offline": "5.6.1",
    "serverless-webpack": "5.3.1",
    "webpack": "4.35.2",
    "webpack-bundle-analyzer": "2.11.1",
    "webpack-node-externals": "1.7.2"
  },
  "dependencies": {
    "@babel/runtime": "7.5.1",
    "source-map-support": "0.5.3",
    "styled-jsx": "3.2.1",
    "styled-jsx-plugin-sass": "1.0.0",
  }

Vadorequest avatar Jul 06 '19 14:07 Vadorequest

Hi @Vadorequest, thanks for the report 👍 It seems, that you need a missing babel transform in your babel.rc to get rid of "SyntaxError: Unexpected token import" Additionally, @babel/runtime might be needed as dependency. Could you try that?

HyperBrain avatar Jul 07 '19 17:07 HyperBrain

Thanks for the feedback @HyperBrain , I don't really understand what I should change in my .babelrc though. (is it a missing plugin?)

As for @babel/runtime, I moved it from devDepencencies to dependencies in package.json, thanks for the hint!

Vadorequest avatar Jul 07 '19 18:07 Vadorequest

I've removed a few things from package.json as specified in https://github.com/zeit/next.js#customizing-babel-config

  • @babel/plugin-transform-runtime (also removed from .babelrc)
  • @babel/preset-env
  • @babel/preset-react

But still the same error.

Vadorequest avatar Jul 09 '19 06:07 Vadorequest