我想创建一个使用无服务器和webpack在aws上部署的包。
serverless.yml中,我想声明所有资源(主要是dynamodb表)和函数。我想使用外部库。
文件夹结构为:

|- serverless.yml
|- webpack.config.js
|- package.json
|- src
  \ - file1.js
  | - file2.js

从serverless.yml中提取
functions:
  function1:
    handler: src/file1.f1
  function2:
    handler: src/file2.f2

从webpack.congfig.js中提取
module.exports = {
  entry: {
    file1: './src/file1.js',
    file2: './src/file2.js',
  },
  target: 'node',
  output: {
    libraryTarget: 'commonjs',
    path: path.join(__dirname, '.webpack'),
    filename: '[name].js',
  },
  module: {
    loaders: [
      {
        test: /\.json$/,
        loaders: ['json-loader'],
      },
    ],
  },
};

当执行node.js时,一切正常,但当测试lambda时,我得到一个错误:
{
  "errorMessage": "Cannot find module '/var/task/src/file1'",
  "errorType": "Error",
  "stackTrace": [
    "Function.Module._load (module.js:276:25)",
    "Module.require (module.js:353:17)",
    "require (internal/module.js:12:17)"
  ]
}

你能告诉我我做错了什么吗?
考虑到我是一个没有服务器的新手,你能为代码和开发组织推荐一些“更好的实践”吗?(强加了无服务器和nodejs,没有webpack和其他任何东西)

最佳答案

我建议使用serverless-webpack plugin。如果没有看到整个serverless.yml文件,很难说清楚,但我假设serverless正在尝试部署functions:下列出的函数,在您的例子中,这些函数是用aws lambda上node.js 4.3运行时无法理解的语法编写的。
Serverless Stack详细介绍了如何使用serverless-webpack插件设置项目:
Setup the Serverless Framework
Add Support for ES6 JavaScript

07-24 09:39
查看更多