使用特定选项或环境变量在 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函数设置环境变量