require()和之间的区别load()

和方法在您的脚本中包含文件和模块以增加功能require()load()但是,它们的行为和可用性有所不同require()load()

mongosh 中的脚本类型

您可以将以下类型的脚本与 mongosh 一起使用:

  • mongosh 脚本,可以是以下任何一种:

  • Node.js 脚本,它是用 加载的任何脚本require(),包括 npm 包。这些脚本始终是文件。

可用性require()load()

和方法require()load()可用性因您使用的脚本类型而异.

  • mongosh脚本中, 和require()load()可用。
  • 在 Node.js 脚本中,仅require()可用

require()和的文件路径load()

脚本的类型决定了您如何使用 require()或指定文件路径load()

  • mongosh脚本中:
    • require()使用标准 Node.js模块解析算法,从 shell 的当前工作目录开始。
    • load()需要:
      • 绝对路径,或
      • 相对路径。使用相对路径时,路径始终被解释为相对于 shell 当前工作目录的路径。
  • 在 Node.js 脚本中,require()使用标准 Node.js模块解析算法,从被调用的文件开始require()

提示:

要返回 shell 的当前工作目录,请 从脚本运行pwd()方法。

要更改 shell 的工作目录,请在脚本中使用cd()方法。

mongosh在脚本中加载外部代码

您可以在脚本文件中加载外部代码mongosh,例如 npm 包或单独的mongosh脚本。

  • mongosh要从另一个脚本加载脚本mongosh,请使用__dirname环境变量。环境__dirname变量返回包含正在执行的文件的目录的绝对路径。

    例子:

    要加载从另一个 脚本mongosh命名的脚本,请将以下行添加到您的脚本中:test-suite.js``mongosh

    load(__dirname + '/test-suite.js')
    

    使用_dirname变量指定绝对路径可确保您正在加载的单独脚本不受外部因素(例如从何处mongosh开始)的影响。

  • 要从mongosh脚本加载 Node.js 脚本,请使用 require()方法。

    例子:

    加载日期-fns 模块,mongosh将以下行test-suite2.js添加到您的脚本中:

    const localRequire = require('date-fns').createRequire(__filename);
    const fileExports = localRequire('./test-suite2.js'); }
    

访问mongoshAPI

  • mongosh脚本可以使用mongoshAPI。
  • Node.js 脚本无权访问 API mongosh

例如,db全局变量(用于显示当前数据库)在脚本中可用mongosh。它在 Node.js 脚本中不可用。

重要的:

mongosh脚本和 Node.js 脚本以不同的方式运行语境. 当在每种类型的脚本中运行相同的命令时,它们可能会表现出不同的行为,例如返回不同的数据类型。mongosh 因此,如果您在 Node.js 脚本中运行代码,您可能会观察到意想不到的结果。

通常,您不应在 Node.js 脚本中保留特定于 mongosh 的代码。

翻译:韩鹏帅

原文:Differences Between require() and load()

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""