【问题标题】:Start NodeJS runtime in AWS lambda with a specific option or environment variable使用特定选项或环境变量在 AWS lambda 中启动 NodeJS 运行时
【发布时间】: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,看起来您的依赖项之一正在使用已弃用的_headersnodejs.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 ) ); 来控制台记录堆栈。

标签: node.js amazon-web-services aws-lambda serverless-framework


【解决方案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);
    });    
};

谢谢!

【讨论】:

    猜你喜欢
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2018-09-14
    • 1970-01-01
    • 2017-12-17
    • 2017-08-01
    相关资源
    最近更新 更多