Node.js Azure函数在节点中加载MongoDB时崩溃
我正试图在节点中编写一个Azure函数,以连接到MongoDB实例(本例中为Cosmos DB) 但是,只要运行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
require(“mongodb”)
,我的函数就会崩溃,不会抛出错误或记录任何内容,HTTP响应返回502
代码
我的设置:
- 通过Azure门户使用所有默认设置创建功能应用程序
- 使用
versionmongodb
创建3.x
package.json
- 通过Kudu外壳运行
npm安装
- 在我的代码中包含require语句
- 向函数发出请求
模块
模块后,我尝试调试该模块,结果导致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。非常感谢你!