AWS Lambda Runtime.ImportModuleError错误(无服务器,webpack,babel)

时间:2019-12-05 20:55:33

标签: amazon-web-services webpack aws-lambda babel serverless

我有一个启用了Serverless Webpack的Lambda函数,可以使用sls offline start在本地运行,并且没有问题,它也可以很好地部署,但是在调用它时会引发以下错误:

{
  "errorType": "Runtime.ImportModuleError",
  "errorMessage": "Error: Cannot find module '@babel/runtime-corejs2/core-js/json/stringify'",
  "trace": [
    "Runtime.ImportModuleError: Error: Cannot find module '@babel/runtime-corejs2/core-js/json/stringify'",
    "    at _loadUserApp (/var/runtime/UserFunction.js:100:13)",
    "    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
    "    at Object.<anonymous> (/var/runtime/index.js:45:30)",
    "    at Module._compile (internal/modules/cjs/loader.js:778:30)",
    "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)",
    "    at Module.load (internal/modules/cjs/loader.js:653:32)",
    "    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)",
    "    at Function.Module._load (internal/modules/cjs/loader.js:585:3)",
    "    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)",
    "    at startup (internal/bootstrap/node.js:283:19)"
  ]
}

我的package.json依赖项/ dev依赖项如下:

"dependencies": {
    "@babel/runtime-corejs2": "^7.7.4",
    "aws-sdk": "^2.352.0",
    "circular-json": "^0.5.9",
    "copy-webpack-plugin": "^5.0.5",
    "selenium-webdriver": "^4.0.0-alpha.3",
    "serverless-resources-env": "^0.3.1",
    "winston-cloudwatch": "^2.0.3"
  },
  "devDependencies": {
    "@babel/cli": "^7.7.4",
    "@babel/core": "^7.7.4",
    "@babel/parser": "^7.7.4",
    "@babel/plugin-proposal-class-properties": "^7.0.0",
    "@babel/plugin-proposal-json-strings": "^7.0.0",
    "@babel/plugin-syntax-dynamic-import": "^7.0.0",
    "@babel/plugin-syntax-import-meta": "^7.0.0",
    "@babel/plugin-transform-runtime": "^7.7.4",
    "@babel/preset-env": "^7.7.4",
    "@babel/register": "^7.0.0",
    "babel-eslint": "^9.0.0",
    "babel-loader": "^8.0.6",
    "eslint": "^4.16.0",
    "serverless": "^1.28.0",
    "serverless-offline": "^3.33.0",
    "serverless-webpack": "^5.3.1",
    "webpack": "^4.41.2",
    "webpack-node-externals": "^1.7.2",
    "winston": "^3.1.0"
  }

我的webpack.config.js看起来像这样:

const slsw = require('serverless-webpack');
const nodeExternals = require('webpack-node-externals');
const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = {
  entry: slsw.lib.entries,
  target: 'node',
  mode: process.env.NODE_ENV === 'development' ? 'development' : 'production',
  externals: [nodeExternals()],
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: __dirname,
        exclude: /node_modules/
      }
    ]
  },
  plugins: [
    new CopyWebpackPlugin([
      './bin/chromedriver',
      './bin/headless-chromium'
    ])
  ]
};

.babelrc

{
  "plugins": [
    [
      "@babel/plugin-transform-runtime",
      {
        "corejs": 2
      }
    ],
    "@babel/plugin-syntax-dynamic-import",
    "@babel/plugin-syntax-import-meta",
    "@babel/plugin-proposal-class-properties",
    "@babel/plugin-proposal-json-strings"
  ],
  "presets": [
    "@babel/preset-env"
  ]
}

serverless.yml

custom:
  - stage: {opt:stage 'staging'}
  - webpackIncludeModules: true
  - packExternalModulesMaxBuffer: 409600
...
package:
  individually: true
...
functions:
...

我尝试使用babel 6.x,现在尝试使用7.x,并且正在获得同一错误的更新版本。

此问题的原因是什么,如何解决?

0 个答案:

没有答案