Javascript Node.js要求不将其存储到变量中

Javascript Node.js要求不将其存储到变量中,javascript,node.js,require,selenium-chromedriver,Javascript,Node.js,Require,Selenium Chromedriver,我有下面的代码片段,它在上下文中工作 "use strict"; require('chromedriver'); var selenium = require('selenium-webdriver'); var driver = new selenium.Builder() .forBrowser('chrome') .build(); 我不明白的是这句话: require('chromedriver') 如果将其删除,则会出现错误: Error: The ChromeDrive

我有下面的代码片段,它在上下文中工作

"use strict"; 
require('chromedriver');
var selenium = require('selenium-webdriver');
var driver = new selenium.Builder()
  .forBrowser('chrome')
  .build();
我不明白的是这句话:

require('chromedriver')

如果将其删除,则会出现错误:

Error: The ChromeDriver could not be found on the current PATH. Please download the latest version of the ChromeDriver from http://chromedriver.storage.googleapis.com/index.html and ensure it can be found on your PATH.
所以它做了一些事情

我理解
var chromedriver=require('chromedriver')
确实如此,到目前为止,我只看到require函数以这种方式使用

所以我的问题是:
require('chromedriver')

它为什么有效

所需的chromedriver在哪里结束


如果require()函数没有将其返回保存到变量中,那么在泛型中会发生什么情况?

在模块上调用
require
,实际上会执行模块中的任何代码。在大多数情况下,模块导出一个或多个函数或对象,您希望将其存储在变量中。但是如果你要写这样的东西:

for (var i = 0;i < 100; i++){
   console.log("I've been called %d times", i);
}
for(变量i=0;i<100;i++){
log(“我被呼叫了%d次”,I);
}

在一个.js文件中,然后在一个节点程序中使用
require
该文件,您可以在控制台中添加100行代码,而不会发生其他任何事情

require
的基本功能是执行模块中编写的代码。最后,这段执行的代码可能返回,也可能不返回。在您的情况下,这段代码返回什么并不重要,重要的是这段代码至少执行一次

还需要注意的是,
require
的结果是缓存的。这意味着即使您多次需要该模块,“代码”也只执行一次


模块和需求的整个范例来自模式,我建议您阅读它

模块可能不会导出任何内容,但可能会将某些内容分配给
global

例如,在
helper.js中

global.timeout = 5000;

global.sayHello = function(e) {
    console.log('Hello',e);
}
require('./helper.js');

sayHello('fish');
main.js中

global.timeout = 5000;

global.sayHello = function(e) {
    console.log('Hello',e);
}
require('./helper.js');

sayHello('fish');

有些人可能不喜欢它,因为这样会污染全局名称空间。但对于小型应用程序,您可以不使用它。

谢谢,我将亲自尝试您的示例。当使用require方法时,是否也有传递参数的方法?例如,在以下代码中将变量传递给配置时,如果导出的函数采用参数,则需要(“dotenv”).config()@slopeofhope-yeah