当前位置: 首页 > 知识库问答 >
问题:

node.js中require()的路径参数

嵇丰
2023-03-14

我正在学习Node.js

例如,我尝试

var server = require("./myserver.js");  

var server = require("./myserver");  

为什么两者都有效?这种东西叫什么?

共有1个答案

夹谷浩博
2023-03-14

如果查看require-函数的节点源代码,可以看到requireload-函数调用一个函数FindLongestRegisteredExtension来确定文件扩展名。如果无法确定扩展名,此函数将返回.js作为其默认值:

function findLongestRegisteredExtension(filename) {
  const name = path.basename(filename);
  let currentExtension;
  let index;
  let startIndex = 0;
  while ((index = name.indexOf('.', startIndex)) !== -1) {
    startIndex = index + 1;
    if (index === 0) continue; // Skip dotfiles like .gitignore
    currentExtension = name.slice(index);
    if (Module._extensions[currentExtension]) return currentExtension;
  }
  return '.js';
}

这就是为什么同时使用required(“。/myserver.js”);required(“。/myserver”);将解析同一个模块。

 类似资料:
  • 问题内容: 我们在量角器上进行了大量的端到端测试。我们正在遵循Page Object模式,这有助于我们保持测试的清洁和模块化。我们还有一组帮助程序功能,可以帮助我们遵循DRY原理。 问题: 单个规范可能需要多个页面对象和帮助程序模块。例如: 你可以看到,我们有一个目录遍历在每一个需要声明:。这是因为我们有一个目录,其中将规范和多个目录存放在受测试的应用程序功能分组下。 问题: 解决量角器中相对路径

  • 问题内容: 我意识到,当我对node.js模块(带有-g标志)进行全局安装时,除非编写了整个路径,否则无法使用该模块。 我的意思是,如果模块已全局安装,则无法使用: 我必须写: 我如何对节点说必须在正确的路径中寻找模块? 谢谢。 问题答案: 总的来说,我建议让npm为您提供路径并按照上面的说明进行设置:

  • 问题内容: 我尝试了这个: 所以我想象require()可能是这样实现的: 那正确吗?请帮助我了解require()或在哪里可以找到源代码。谢谢! 问题答案: 源代码在这里。/ 不是关键字,而是全局变量。你的主要脚本包前开始在其拥有所有喜欢全局的功能,等在其上下文。 请注意,虽然module.js本身正在使用,但这是一个不同的require函数,它是在名为“ node.js”的文件中定义的 上面的

  • 本文向大家介绍node.js中的require使用详解,包括了node.js中的require使用详解的使用技巧和注意事项,需要的朋友参考一下 代码注释里已经描述的非常的清晰,这里就不多废话了,直接奉上代码: 小伙伴们是否清楚了node.js中require的使用方法了呢,如有疑问,请留言。

  • 问题内容: 我需要通过npm安装的模块。我想访问一个从属于该模块的.js文件(因此我可以在其中继承一个Constructor方法)。我无法(当然,不想)修改模块的代码,因此没有地方提取其__dirname。 ~~~ 更好的办法是获取模块的已加载模块信息 问题答案: 如果我正确理解您的问题,则应该使用require.resolve(): 使用内部的require()机制查找模块的位置,而不是加载模块

  • 问题内容: 我在github上遇到了这个文件,它是这样做的: 那是什么意思?当我尝试相同时,我得到: 问题答案: 它需要父文件夹的文件,这是一个:https : //github.com/visionmedia/node- migrate/blob/master/index.js

  • 问题内容: 我正在使用Angular2开发NodeJS应用程序。在我的应用程序中,我有一个主页和搜索页面。对于主页,我有一个将为 localhost:3000 /* 呈现的HTML页面,并且从主页用户导航到 搜索, 即 我由 angular2路由 处理的 localhost:3000 / search 页面。 * 我没有搜索页面的页面,其视图由angular2呈现。但是当我直接点击 localho

  • 问题内容: 到目前为止,我已经通过以下方式创建了类和模块: 现在使用ES6,您可以像下面这样创建“实际”类: 现在,首先,我喜欢这个:),但这引起了一个问题。如何将其与的模块结构结合使用? 假设您有一个班级,为了演示而希望使用一个模块,说您想使用 所以您创建文件: Animal.js 这是正确的方法吗? 另外,如何将此类公开给节点项目中的其他文件?如果在单独的文件中使用它,您仍然可以扩展该类吗?