我有一个启用了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,并且正在获得同一错误的更新版本。
此问题的原因是什么,如何解决?