require()和之间的区别load()
和方法在您的脚本中包含文件和模块以增加功能require()。load()但是,它们的行为和可用性有所不同require()。 load()
mongosh 中的脚本类型
您可以将以下类型的脚本与 mongosh 一起使用:
mongosh 脚本,可以是以下任何一种:
mongoshrc.js文件。
使用load()方法加载的代码。
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``mongoshload(__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 的代码。
翻译:韩鹏帅