Node.js Azure函数在节点中加载MongoDB时崩溃

Node.js Azure函数在节点中加载MongoDB时崩溃,node.js,mongodb,azure-functions,Node.js,Mongodb,Azure Functions,我正试图在节点中编写一个Azure函数,以连接到MongoDB实例(本例中为Cosmos DB) 但是,只要运行require(“mongodb”),我的函数就会崩溃,不会抛出错误或记录任何内容,HTTP响应返回502代码 我的设置: 通过Azure门户使用所有默认设置创建功能应用程序 使用mongodbversion3.x创建package.json 通过Kudu外壳运行npm安装 在我的代码中包含require语句 向函数发出请求 这不会在代码中引发错误,我看到日志记录是在require

我正试图在节点中编写一个Azure函数,以连接到MongoDB实例(本例中为Cosmos DB)

但是,只要运行
require(“mongodb”)
,我的函数就会崩溃,不会抛出错误或记录任何内容,HTTP响应返回
502
代码

我的设置:

  • 通过Azure门户使用所有默认设置创建功能应用程序
  • 使用
    mongodb
    version
    3.x
    创建
    package.json
  • 通过Kudu外壳运行
    npm安装
  • 在我的代码中包含require语句
  • 向函数发出请求
这不会在代码中引发错误,我看到日志记录是在require语句之前运行的,而不是在require语句之后运行的(这使得调试非常困难)

我还尝试过从函数中运行mongo查询,但它以完全相同的方式失败

在将一些钩子放入节点的
模块
模块后,我尝试调试该模块,结果导致mongo的一个依赖项中出现一行,在隔离()中运行时以类似的方式失败,这似乎是由于堆栈空间不足所致

然而,对于Azure函数来说,这似乎是一个相当主流的用法,而且我还没有看到任何类似的问题,因此我倾向于怀疑这是我的设置问题,而不是
mongodb
库问题,但我还没有发现错误配置,因为我没有更改任何默认设置-现在,我被难住了

我现在没有完整的代码示例,因为我不在工作电脑旁,但是代码是

const mongo = require('mongodb');
module.exports = function(context) {
  context.res = {
    body: 'Hello world'
  };

  context.done();
}

如果没有require语句,代码运行正常,将响应返回到浏览器。

我很确定,如果您向require函数添加与Microsofts Cosmos DB Guide for mongo中相同的函数,那么以下函数应该可以工作

var mongodb = require('mongodb').MongoClient;
你可以这样说:

const mongodb = require('mongodb');
我很想知道这是否会有所不同。在浏览了微软自己的文档后,几乎所有文档都是这样声明的


以下是我找到的教程:

事实证明,这个问题是由堆栈空间不足引起的。将修补程序推送到saslprep库(v1.0.1)后,这一问题现已得到解决。

您从节点web应用程序中获得了更多详细信息吗?该函数只是默认的webhook JavaScript函数,顶部插入了
require(“mongodb”)
-抱歉,我现在不在工作计算机上,因此,我无法提供完整的示例。默认情况下,该模块可能未安装在函数上,您可能需要手动安装。您是否已检查功能应用程序的文件结构中是否存在节点\模块目录?另外,您运行的函数版本是v1还是v2?(检查功能扩展版本应用程序设置-“beta”为v1。)@KatyShimizu-默认情况下未安装(我使用kudu外壳安装了它),我已验证安装在节点模块目录中。我正在运行v2的函数。恐怕我已经尝试过了——它会产生完全相同的结果。问题似乎是在加载依赖项时发生的,因此尝试从依赖项访问属性似乎无法解决问题。您能否提供将修补程序推送到saslprep库的详细信息?我曾尝试升级mongo,但我一直在使用saslprep v1.0.0。我和你的问题完全一样。我认为你的问题可以通过删除你的
package lock.json
文件并重新安装来解决,这可能会阻止你获得新版本。(如果这不起作用,请尝试删除您的
节点模块
文件夹并从头开始重新安装。)我向GitHub页面发出了一个拉取请求,作者接受了该页面,并将其发布为v1.0.1(我真的要感谢他能很好地使用)。我完全忘记了
包锁.json
。通过对该文件和
node\u模块进行Nuking操作,我获得了saslprep 1.0.1。非常感谢你!