SvelteKit 与 MongoDB ReferenceError:全局未定义

2023-12-24

我正在尝试设置 MongoDB 连接库功能。我知道这个功能很可靠,它用在很多地方(搜索此处使用 Global 来维护跨热重载的缓存连接)并且您会发现很多用途,包括 next.js 版本。请注意,数据库连接全局存储的目的是减少任一时间使用的数据库连接总数。

我不明白的是当我通过导入这个库时遇到的错误import { connectToDatabase } from '$lib/database';

数据库.js

// https://github.com/mongodb-developer/mongodb-next-todo/blob/main/util/mongodb.js
import { ENV_OBJ } from "$lib/env";
import { MongoClient } from "mongodb";

const uri = ENV_OBJ.MONGODB_URI;

if (!uri) {
    throw new Error("Please define the Mongodb uri environment variable inside .env");
}

/**
 * Global is used here to maintain a cached connection across hot reloads
 * in development. This prevents connections growing exponentially
 * during API Route usage.
 */
let cached = global.mongo

if (!cached) {
    cached = global.mongo = { conn: null, promise: null }
}

export const connectToDatabase = async() => {
    if (cached.conn) {
        return cached.conn;
    }

    if (!cached.promise) {
        const options = {
            useNewUrlParser: true,
            useUnifiedTopology: true
        };

        cached.promise = MongoClient.connect(MONGODB_URI, opts).then((client) => {
            return {
                client,
                db: client.db(MONGODB_DB),
            }
        })
    }
    cached.conn = await cached.promise;
    return cached.conn;
}

错误:

global is not defined

ReferenceError: global is not defined
    at node_modules/mongodb/lib/promise_provider.js (http://localhost:3000/node_modules/.vite/mongodb.js?v=3885e04e:548:25)
    at __require2 (http://localhost:3000/node_modules/.vite/chunk-6ODJH7E3.js?v=3885e04e:10:44)
    at node_modules/mongodb/lib/utils.js (http://localhost:3000/node_modules/.vite/mongodb.js?v=3885e04e:6524:30)
    at __require2 (http://localhost:3000/node_modules/.vite/chunk-6ODJH7E3.js?v=3885e04e:10:44)
    at node_modules/mongodb/lib/cursor/abstract_cursor.js (http://localhost:3000/node_modules/.vite/mongodb.js?v=3885e04e:10873:19)
    at __require2 (http://localhost:3000/node_modules/.vite/chunk-6ODJH7E3.js?v=3885e04e:10:44)
    at node_modules/mongodb/lib/index.js (http://localhost:3000/node_modules/.vite/mongodb.js?v=3885e04e:25281:29)
    at __require2 (http://localhost:3000/node_modules/.vite/chunk-6ODJH7E3.js?v=3885e04e:10:44)
    at http://localhost:3000/node_modules/.vite/mongodb.js?v=3885e04e:25616:23

注意,我确实在生成的最小 sveltekit 存储库中看到一个名为global.d.ts我不确定它的目的。它仅包含:

 /// <reference types="@sveltejs/kit" /> 

关于导致错误的原因有什么想法吗?

参考:“@sveltejs/kit”:“版本”:“1.0.0-next.118”,

编辑:在这个问题上花了很多时间后,全局未定义错误似乎来自import { MongoClient } from "mongodb";如果我添加适当的 console.logs,我可以看到 MongoClient 函数在服务器上运行良好,但随后我在客户端上收到全局错误。服务器表明根本没有错误。


原来我是在打电话import { connectToDatabase } from '$lib/database'不在 .js 帮助程序文件或 API 样式 (.js) 中端点 https://kit.svelte.dev/docs#routing-endpoints。我试图使用该导入并直接从<script>xxx.svelte 文件的一部分。

坚决不去了。这会立即产生全局未定义 error.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SvelteKit 与 MongoDB ReferenceError:全局未定义 的相关文章

  • mongodb 正在运行吗?

    我已经在我的 Unix 服务器上安装了 Mongodb 和 PHP 驱动程序 我的问题是如何判断 Mongodb 是否正在运行 是否有一个简单的命令行查询来检查状态 如果我从外壳程序启动一次 如果我退出外壳程序 它会继续运行 情况似乎并非如
  • Mongo $group 和 $project

    我正在尝试获取关键字计数parentId categioryId and llcId 我的数据库是 id ObjectId 5673f5b1e4b0822f6f0a5b89 keyword electronic content manage
  • 全局变量用例

    我有几个脚本和模块 它们使用全局变量来完成很多事情 我的日志记录可以采用以下三种形式之一 简洁 详细和验证 没有实际操作的详细日志记录 仅验证提供的数据 我还有许多函数 它们根据运行的上下文 用户或机器 而做出不同的响应 并且正在执行的操作
  • 在 shell/shell 脚本中设置 MongoDB 写关注

    我正在尝试填充一个集合MongoDB的壳 据我了解 使用轻松的Write Concern可以大大加快这个过程 我说的是文档 http docs mongodb org manual core write concern write oper
  • 在 CodeIgniter 中,我应该在哪里声明全局变量?

    我想声明一些全局变量和全局常量 通常 我会将它们放在我自己的自定义框架的 include global php 中 我应该在 CodeIgniter 中哪里定义全局变量 这是我要声明的全局变量的示例 define USERSTAT OFFL
  • 如何用另一个静态变量初始化一个静态变量?

    静态1 hpp include
  • MongoDB 嵌套数组查询

    我问这个作为评论another https stackoverflow com questions 5250652 query a nested array in mongodb问题 还发了一个question https groups g
  • $unwind聚合框架中的对象

    在 MongoDB 聚合框架中 我希望在对象 即 JSON 集合 上使用 unwind 运算符 看起来不像是这样possible http docs mongodb org manual reference aggregation S un
  • $_POST、$_GET 和 $_REQUEST 之间有什么区别?

    我对这些超级全局变量有点困惑 POST GET and REQUEST 在 PHP 中 在 PHP 中哪些场景需要使用这些变量 这三个变量的主要区别是什么 POST是在使用 application x www form urlencoded
  • 国外收藏的查找和排序

    所以我有一个收藏users 并且此集合中的每个文档以及其他属性都有另一个集合中文档的 id 数组 workouts 集合中的每个文档workouts有一个名为date 这就是我想要得到的 对于特定用户 我想要获取属于该用户的锻炼的 work
  • Django:无法为用于检索数据的模型实例化抽象模型

    我正在开发一个项目 该项目有一个 Djongo 抽象模型和一个主模型 当我尝试插入一个值时 它被插入而没有错误 但是当我尝试检索数据时 我得到 抽象模型无法实例化 这是我的模型 class Exam questions models Mod
  • 如何确定 STARTUP2 BTree Bottom Up 步骤的总体进度?

    确定新次要成员的初始同步 STARTUP2 的索引构建阶段的总体进度的好方法是什么 在我的例子中 索引构建阶段需要很长时间 几天 如果能够看到它在这个过程中的进度 那就太好了 日志输出如下所示 Tue Jan 27 20 04 45 006
  • MVC 3 Razor _ViewStart 中的公共变量

    我正在 MVC 3 附带的新 Razor 引擎上构建一个网站 并且喜欢新语法 但是 我对使用公共属性 常量感到不知所措 我知道使用 WebForms 我们可以在代码后面添加公共属性 public string ImageFolder get
  • 访问 Amazon EC2 上的 Mongodb 时出现问题

    我还有一个问题要问你 我有安装了 mondodb 的 Amazon EC2 实例 它工作得很好 除了一件事 我无法从外部 我的电脑 访问 连接到 它 我认为安全组的问题 这是某种默认防火墙 有谁知道如何配置EC2实例来访问mongodb 提
  • 用于高效大规模图遍历的数据库

    我有一个大型二分有向图数据集 约 2000 万个元素 在当前的使用中 我运行的遍历算法每次运行约 500 000 个节点 这些算法有效 但历史上运行的是从文本文件加载到内存的数据 文本文件似乎是一个不好的方法 所以我将数据作为邻接列表传输到
  • 将变量声明为全局有什么缺点吗? [复制]

    这个问题在这里已经有答案了 在C 语言中将变量声明为全局有什么缺点吗 void foo int a a 10 int a void foo a 10 他们之间有什么区别吗 为什么不必要时应避免使用全局变量 http c2 com cgi w
  • 如何从 MongoDB 中的 ChangeStream 过滤对特定字段的更新

    我正在设置一个 ChangeStream 以便在集合中的文档发生更改时通知我 以便我可以将该文档的 LastModified 元素更新插入到事件发生的时间 由于此更新将导致 ChangeStream 上发生新事件 因此我需要过滤掉这些更新以
  • 本地 SQLite 与远程 MongoDB

    我正在设计一个新的 Web 项目 在研究了一些旨在可扩展性的选项后 我提出了两个数据库解决方案 为可扩展方式精心设计的本地 SQLite 文件 每个 X 用户一个新的数据库文件 因为写入将取决于用户内容 不存在跨用户数据依赖性 远程 Mon
  • 为什么MongoDB不使用复合索引进行查询?

    以下是我对此集合的复合索引和单一索引 db Collection getIndexes 1 v 2 key id 1 name id ns service Collection 2 v 2 key FirstId 1 SecondId 1
  • 如何在 mongo shell 查询中仅投影嵌套数组的匹配字段

    我对 mongodb 相当陌生 我希望这是一个简单的问题 我有一个嵌套架构 其中有一个数组字段 其中该数组的每个项目都是一个本身具有数组字段的对象 例如 gt db mytest insert name a top x 1 y 2 nest

随机推荐

  • 更新 parse.com 中的用户对象

    我如何更新解析中的用户对象 出于安全原因 我知道必须记录用户才能修改自身 这是我的代码 但不起作用 POSThttps api parse com 1 classes User xj3QLLYy07 https api parse com
  • UIKit 和单元测试

    我正在为我的 iPhone 应用程序实现一些测试用例 我已成功设置 UnitTest Target 如下所述 iPhone开发指南 http developer apple com iphone library documentation
  • Oracle 合并语句和按源/目标条件

    我需要做一个MERGE在 Oracle 中 但我被困住了 在 SQL Server 中 我总是使用BY SOURCE and BY TARGET检查记录存在的位置 然后采取行动 我有点困惑 因为我不知道如何在 PL SQL 中实现相同的目标
  • PHP - 计算字符串中逗号的数量

    如何计算逗号在这样的字符串中出现的次数 A B C D 它应该返回 3 substr count my string 如果您希望将逗号之间的所有元素作为数组获取 您可以随时 splitted explode my string
  • 从模式创建 ERD?

    我被告知要创建一个 ERD 图 给出以下内容 The college keeps track of each student s name student number social security number address phon
  • Ansible 自定义模块:可以打印语句吗?

    我有一个 Ansible 自定义模块 用于在我的剧本中执行特定任务 我想调试该模块内的特定变量 有没有办法可以打印这个自定义模块内的任何内容 在下面的示例中 打印 Hello 请检查自定义模块中的以下代码片段 我正在通过一个jobid作为该
  • 如何查找更改正在监视的对象的调用站点

    AngularJS 允许监听对象的变化 并调用提供给 watch 函数的回调函数 对于像 ngGrid 这样使用 AngularJS 的大型库 对象经常被 监视 一旦调用了监视回调 如何追溯到导致对象发生更改的调用站点 如果不知道是什么导致
  • 如何在 WordPress 中使用 get_current_user_id() ?

    我正在尝试弄清楚如何使用该功能get current user id 适当地 我需要它来分离用户数据 就像普通的 PHP 代码一样 SESSION 我找到了以下代码示例 并将其放入Function php它工作正常 但它似乎在每个页面上执行
  • PHP 查找最高键值的索引

    我有一个数组的数组 我想找到最高键值Rating的数组的索引 例如 下面的数组索引为 1 任何帮助将非常感激 array 3 0 gt array 3 name gt Nola Roman Road rating gt 4 2 price
  • Azure kubernetes - 具有内部负载均衡器的 Istio 控制器

    我有一个带有 Istio 服务网格的 Azure kubernetes 集群 目前 Istio 控制器与公共负载均衡器 IP 关联 我想使用内部负载均衡器配置 Istio 我将使用公共 IP 到内部 LB 的防火墙映射 如何配置 Istio
  • 如何将 GridView.DataSource 导出到数据表或数据集?

    我怎样才能导出GridView DataSource数据表或数据集 假设您的 DataSource 是 DataTable 类型 您可以这样做 myGridView DataSource as DataTable
  • 谷歌云消息传递示例[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有人有示例 gcm 服务器端和 android 项目吗 最好有一个解释一切的教程 我尝试查看示例中包含的内容 但未能成功 我有一个 c2d
  • maven-processor-plugin 忽略未定义的符号

    我有 JPA 2 maven 项目 我想处理源以获得静态元模型 我做了什么我拿走了JBoss 的静态元模型处理器 http docs jboss org hibernate stable orm topical html metamodel
  • 帮助循环遍历数组

    我在我的网站上进行了搜索 得到了以下数组 0 gt Array job id gt 4 job title gt Supercar Test Driver salary gt 40000 job tags gt Driving retrai
  • 在代码中复制 SQL Server 数据库

    我有两个 SQL Server 连接字符串 CX 和 CY 我需要做的是 确保 CY 中没有表 备份数据库CX 将其恢复为 CY 还没有找到我要找的东西 我不需要工具来执行此操作 我需要在运行时用 C 代码执行此操作 因为添加新客户端的操作
  • G++ 总是因对 _Unwind_GetIPInfo 的未定义引用而失败

    我刚刚在我的 Asus EeePC 上网本上升级到 Ubuntu 11 04 并且遇到了 G 问题 使用 G 编译任何程序 即使是简单的 Hello World 无论是使用 iostream cstdio 还是 stdio h 都会失败并显
  • 如何从子元素中删除 data-target 和 data-toggle 或禁用元素触发事件?

    HTML div class card panel span class white text text span div class card action each tags div class chip div div div
  • 如何使用 int 值将项目添加到表视图

    如何将数字添加到表格单元格并将数字添加到总标签 w当我添加像 ps2 这样的商品时 我怎样才能将价格添加到表格单元格并将其添加到我的总标签中 这是我三周以来一直试图解决的问题 到目前为止我的桌子 我的 ViewController swif
  • 通过 JSONProvider 重用类型定义?

    我正在使用 FSharp Data 中的 JSONProvider 自动为我使用来自服务的示例响应来使用的 Web 服务创建类型 然而 当涉及到在服务中重用的类型时 我有点困惑 例如 有一个 api 方法返回 X 类型的单个项目 而另一个返
  • SvelteKit 与 MongoDB ReferenceError:全局未定义

    我正在尝试设置 MongoDB 连接库功能 我知道这个功能很可靠 它用在很多地方 搜索此处使用 Global 来维护跨热重载的缓存连接 并且您会发现很多用途 包括 next js 版本 请注意 数据库连接全局存储的目的是减少任一时间使用的数