在 AWS Lambda/NodeJS 运行时中,我尝试从绝对路径 ( /opt/nodejs/node_modules/puppeteer)导入。
Source 在本地运行良好,但是,一旦与 Webpack/serverless-webpack 捆绑并在 AWS Lambda 中运行,就会require('puppeteer')导致:
{"errorMessage":"Cannot find module 'puppeteer'","errorType":"Error","stackTrace":["webpackMissingModule (/var/task/src/render/handler.js:643:89)","/var/task/src/render/handler.js:643:173","next (native)","step (/var/task/src/render/handler.js:608:191)","/var/task/src/render/handler.js:608:361"]}
Run Code Online (Sandbox Code Playgroud)
我检查过:
/opt./opt/nodejs/node_modules/puppeteer确实存在。NODE_PATH 正确包括 /opt/nodejs/node_modulesnode.js webpack aws-lambda serverless-framework serverless-webpack-plugin
我按照 webpack4 示例来设置配置:https : //github.com/serverless-heaven/serverless-webpack/tree/master/examples/babel-webpack-4 因为我收到错误“找不到模块源-地图支持/注册”。
我已经研究了已经创建的问题:
https://github.com/serverless-heaven/serverless-webpack/issues/357
https://github.com/serverless-heaven/serverless-webpack/issues/228
现在我的配置是:
.babelrc{
"comments": false,
"sourceMaps": "both",
"presets": ["env","stage-2"],
"plugins": ["source-map-support"]
}
Run Code Online (Sandbox Code Playgroud)
webpack.config.js:
const path = require('path');
const nodeExternals = require('webpack-node-externals');
const slsw = require('serverless-webpack');
module.exports = {
entry: slsw.lib.entries,
mode: slsw.lib.webpack.isLocal ? 'development' : 'production',
output: {
libraryTarget: 'commonjs2',
path: path.join(__dirname, '.webpack'),
filename: '[name].js',
sourceMapFilename: '[file].map',
},
optimization: {
// We no not want to minimize our code.
minimize: false,
},
performance: {
// Turn off size warnings for …Run Code Online (Sandbox Code Playgroud) node.js webpack serverless serverless-webpack-plugin serverless-offline
我有一个带有 serverless-webpack 的无服务器框架项目。Webpack 很好地捆绑了应用程序本身。
我已设置 lambda 以在更新后尝试迁移,如链接的博客文章中所述:https ://spin.atomicobject.com/2018/01/06/database-migration-aws-lambda/
代码位于 ES6 中,无服务器框架通过 webpack babel-loader 运行它。我还设置了 webpack,通过将迁移文件复制到正确的文件夹来将迁移文件包含在捆绑包中:
plugins: [
new CopyWebpackPlugin([{ from: './src/migrations/*.js', to: '' }], {}),
]
Run Code Online (Sandbox Code Playgroud)
当我将文件放在正确的文件夹中以便可以找到它们时,我收到此错误:
Error running migrations: Error: Cannot find module '.../.webpack/service/src/migrations/20180512154816_create-parameters.js'
Run Code Online (Sandbox Code Playgroud)
我尝试将迁移文件夹作为依赖项包含到 package.json (迁移:'./src/migrations')。我尝试要求调用 withDB 函数的文件中的所有文件,仍然出现相同的错误。
迁移文件包含向上和向下导出:
exports.up = function (knex, Promise) {
..
};
exports.down = function (knex, Promise) {
..
};
Run Code Online (Sandbox Code Playgroud)
问题是我可以创建一个可以通过无服务器部署提供的模块,以便 knex 能够找到这些模块。
通过在迁移文件夹中创建一个 index.js 文件来以某种方式导出所有迁移?require('./migration-file.js') 不起作用。
node.js webpack serverless-framework serverless-webpack-plugin