【发布时间】:2018-04-20 10:20:19
【问题描述】:
注意:这是一个关于将 AWS Lambda Webpack 构建从 v6.10 迁移到 v8.10 的问答 - 不需要帮助,但当然总是鼓励更好的答案!
在阅读了 James Long 的优秀系列“Webpack 的后端应用”(part 1, part2和part3)。
直到最近,Amazon Web Services 提供的唯一 Node.js 版本是 6.10;您必须以“回调”样式编写 Lambda fn。但是在 2018 年 4 月 2 日AWS announced that 8.10 was now supported,建议的模式是异步/等待,这很棒!直到它立即破坏了我的 Webpack 构建。经过一些调试,我可以通过向 Lambda 处理程序添加一个异步 fn 来破坏我的构建(我什至不需要调用它):
async function firstAsync() {
return true;
}
exports.handler = async (event) => {
// TODO implement
return 'Hello from Lambda!'
};
需要明确的是,在 AWS Lambda 控制台中执行此操作非常好,运行良好。 Webpack 甚至成功构建它,但在上传到 AWS Lambda 后,我收到以下错误消息:regeneratorRuntime is not defined。我的代码如下。我需要做什么?
webpack.config.js
const nodeExternals = require('webpack-node-externals');
const path = require('path');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const webpack = require('webpack');
const config = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
library: 'index',
libraryTarget: 'commonjs2',
filename: 'index.js'
},
target: 'node', // building for a Node environment
externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
module: {
rules: [{
test: /\.(js|jsx)$/,
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
}]
},
plugins: [
new UglifyJsPlugin()
]
};
module.exports = config;
package.json
{
"name": "lambda-webpack",
"version": "1.0.0",
"description": "An empty project scaffold to enable webpack builds in AWS Lambda",
"main": "index.js",
"scripts": {
"build": "webpack",
"upload": "upload.bat"
},
"author": "Geek Stocks®",
"license": "MIT",
"devDependencies": {
"aws-sdk": "^2.179.0",
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-preset-env": "^1.6.1",
"uglifyjs-webpack-plugin": "^1.1.6",
"webpack": "^3.10.0",
"webpack-node-externals": "^1.6.0"
}
}
【问题讨论】:
标签: node.js amazon-web-services webpack aws-lambda