Node.js AWS Lambda:模块初始化错误:Object.fs.openSync(fs.js:641:18)处的错误(本机)
我有一个AWS DynamoDB lambda,它由DynamoDB流触发。所有的实现都是在JS和ClaudiJS中完成的。使用Node.js AWS Lambda:模块初始化错误:Object.fs.openSync(fs.js:641:18)处的错误(本机),node.js,npm,aws-lambda,amazon-dynamodb,claudiajs,Node.js,Npm,Aws Lambda,Amazon Dynamodb,Claudiajs,我有一个AWS DynamoDB lambda,它由DynamoDB流触发。所有的实现都是在JS和ClaudiJS中完成的。使用claudiacreate命令部署lambda时,没有问题 问题在于,当使用停靠的构建服务器使用GoCD管道部署相同的函数时,调用lambda函数时会发生以下错误 module initialization error: Error at Error (native) at Object.fs.openSync (fs.js:641:18) at Object.fs.r
claudiacreate
命令部署lambda时,没有问题
问题在于,当使用停靠的构建服务器使用GoCD管道部署相同的函数时,调用lambda函数时会发生以下错误
module initialization error: Error
at Error (native)
at Object.fs.openSync (fs.js:641:18)
at Object.fs.readFileSync (fs.js:509:33)
at Object.Module._extensions..js (module.js:578:20)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
现在我已经花了10多个小时,我不知道如何解决这个问题。有人能帮我吗
Lambda使用节点6.10,我使用babel传输到节点6.10。
尝试使用
node:borbon
和ubuntu:16.04
图像作为Docker的构建器图像 我在这个问题上花了一天多的时间。最后,我尝试了几乎所有可能的方法,最终通过切换到从解决了问题。为了供大家使用,我将在这里提到我尝试过的方法和结果
warn
,也无需在构建服务器上传输代码。但一切都没有改变webpack.config.js
const path = require('path');
const slsw = require('serverless-webpack');
const nodeExternals = require('webpack-node-externals');
const build = {
entry: slsw.lib.entries,
resolve: {
extensions: ['.js'],
},
target: 'node',
output: {
libraryTarget: 'commonjs',
path: path.join(__dirname, '.webpack'),
filename: '[name].js',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
},
],
},
],
},
mode: slsw.lib.webpack.isLocal ? 'development' : 'production',
optimization: {
// Do not minimize the code.
minimize: false,
},
performance: {
// Turn off size warnings for entry points
hints: false,
},
externals: [nodeExternals()],
};
module.exports = build;
当我的无服务器实例要读取.json文件并从中提取json对象时,会发生此错误。所以我在脚本中创建了json对象作为json对象。然后一切都很好。。我使用了webpack.config的基本配置,让我先说一下,我没有使用GoCD的具体经验,但我在其他上下文中遇到了这个错误 此错误的一个潜在原因是将代码部署到VM时出现文件权限问题。 该错误是一个一般性错误,意味着Lambda函数无法启动。您也可以在AWS内部收到此错误。不幸的是,您在GoCD中看到的日志记录级别似乎与AWS CloudWatch处于同一级别,这不是很好,并且没有告诉您是什么阻止了Lambda启动。您需要更多的日志记录来确定具体的原因 如果在AWS中确实遇到此错误,请打开Lambda函数。在AWS页面的顶部应该有一个下拉列表,旁边有一个“测试”按钮 打开下拉列表并选择“配置测试事件”。您必须设计此测试以匹配特定的lambda功能。接下来,选择新测试并单击“测试”按钮。Lambda将向您显示一条成功或失败消息,其中包含通话的详细信息
在我的例子中,我们使用AWS
sam
实用程序在linux机器上编写了上载脚本,文件权限不太正确(错误是“权限被拒绝,打开'/var/task/index.js')。您是如何读取该文件的?无论如何,我提到的错误发生在实际代码开始执行之前。看来你的案子和我的不一样。不,快递服务器当然不会启动。它找不到配置文件(config.json)。因此,我在节点源中添加了配置json对象作为json对象是的,您是正确的。但这里的问题是我没有这样的文件。引发此异常是因为它试图在lambda函数中读取文件。因此,我没有读取文件,而是将文件的内容放在节点脚本中