aws + serverless + webpack =>在prod中找不到xxx模块

我想创build一个包,使用无服务器webpack在AWS上进行部署。

serverless.yml我想声明所有的资源(主要是DynamoDb表)和函数。 我想要使​​用外部的node.js库。

该文件夹结构是:

 |- 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'], }, ], }, }; 

做一个serverless deploy一切正常,但是当testinglambda时,我得到一个错误:

 { "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和其他一切不是)

我会build议使用serverless-webpack插件 。 很难说没有看到整个serverless.yml文件,但我会假设无服务器正在试图部署function下列出的functions: ,在你的情况下,这是写在一个不能被Node.js 4.3运行时在AWS上理解的语法拉姆达。

无服务器堆栈详细介绍了如何使用serverless-webpack插件设置项目的详细步骤:

  1. 设置无服务器框架
  2. 添加对ES6 JavaScript的支持

一个可能的解决scheme是从serverless.yml文件中的函数处理程序中删除src/

这种方法有一个副作用,那就是在使用serverless-mocha-plugin自动创buildtesting时,不再考虑src/ ,它必须在const mod = require('../src/user.js');手动添加const mod = require('../src/user.js');

可能还有其他副作用, 缺乏证据不是缺席的证据! 🙂

所以, 我仍然在寻找一个没有副作用的解决scheme