使用特定选项或环境变量在 AWS lambda 中启动 NodeJS 运行时

Posted

技术标签:

【中文标题】使用特定选项或环境变量在 AWS lambda 中启动 NodeJS 运行时【英文标题】:Start NodeJS runtime in AWS lambda with a specific option or environment variable 【发布时间】:2020-06-18 01:00:26 【问题描述】:

执行 AWS Lambda 时出现 NodeJS 弃用错误(使用节点 12.x):

[DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated

找不到生成它的模块/代码段。似乎没有任何内容引用_headers or _headerNames

在 Node 中应该可以将参数或环境变量设置为 explain here 到 --trace-deprecation 和/或 --trace-warnings 和/或 --throw-deprecation。在 lambda 的 AWS 控制台环境变量中设置一个或多个这些值时,不会显示额外信息。

为 AWS Lambda 设置此运行时参数的方法是什么?有没有办法捕获堆栈跟踪以了解已弃用的错误发生在哪里?

【问题讨论】:

如果不查看 lambda 函数中的代码,很难说什么 嗨@riga,看起来您的依赖项之一正在使用已弃用的_headers(nodejs.org/api/…),您可以发布代码吗? @pepo 我知道这个,我的问题是找到哪一个。 嗨@riga,好的。要启用跟踪,您可以使用 NODE_OPTIONS env 变量,如 NODE_OPTIONS='--trace-deprecation'' (nodejs.org/api/cli.html#cli_node_options_options) 嗨@riga,我刚刚做了一个快速测试(gist.github.com/pepoviola/aaba2d7af4d1b443b37e109f2702e358)设置环境变量并按预期工作。此外,您可以使用process.on('warning', warning => console.log( warning.stack ) ); 来控制台记录堆栈。 【参考方案1】:

feliz de ayudar!我为未来粘贴了 sn-p。

按照here 的说明在 webpack.config.js 代码中设置标志

process.traceDeprecation = true;

module.exports = 
  // Your config
;

如果弃用错误出现在函数中,您可以执行以下操作:(即使 any 违背了 Typescript 的目的,只是为了定位问题,之后将被删除)

(process as any).traceDeprecation = true;

也可以查看数值

exports.handler = async (event) => 
    console.log( 'process.traceDeprecation', process.traceDeprecation );
    Buffer(1);
    process.on('warning', (warning) => 
        console.log( 'stack of deprecation' );
        console.log(warning.stack);
    );    
;

谢谢!

【讨论】:

以上是关于使用特定选项或环境变量在 AWS lambda 中启动 NodeJS 运行时的主要内容,如果未能解决你的问题,请参考以下文章

重新开始继续准备AWS Dev认证考试:AWS Lambda 环境变量

使用 cloudformation 模板的 AWS Lambda 的动态环境变量

无法为执行AWS :: CloudFormation :: CustomResource的aws lambda函数设置环境变量

lambda 函数中 api 键的 aws appsync 环境变量

通过AWS lambda存储值

AWS lambda:如果log4j.xml中不存在环境变量,有没有办法设置默认值?