Node.js:require语句中的相对path如何工作?

我正在使用茉莉花节点来运行茉莉花testing。 我的项目有一个典型的结构“spec”和“src”文件夹。

在我的“HelloSpec.js”文件里面我有:

require('../src/Hello.js'); 

但是,当我用这个命令从项目的根文件夹(即“spec”和“src”的父文件夹)运行testing时:

 jasmine-node spec/HelloSpec.js 

我收到错误,指出require d文件实际上并没有被要求。 但是,如果我将require语句更改为:

 require('src/Hello.js'); 

一切正常。 所以看起来require语句是parsing相对于执行testing的文件夹的path,而不是相对于它们自己的文件位置。 但是这对我来说没有意义。

“要求”中的相对path如何工作? 我需要做一些事情,让他们像我期望的那样工作吗?

谢谢!

通常,当前目录的path以./开头,即当前目录。 你的src/Hello.js是一个包含项目文件夹的pathsearch。

我的理解是,要求./../是相对于它所要求的文件,或者至less这一直对我有用。 如果它不以这些开始,那么通常会尝试pathsearch。

茉莉花节点不是我的经验基础上的节点。

茉莉花节点可能有一个不同的path定义,这就是为什么pathsearch似乎工作。

如果它不坏不修复? 🙂

编辑与正确的答案

问题原来是我不小心。 我忘了做module.exports。 我解决了这个问题,现在一切都按照我预期的方式工作 不知道为什么它没有任何出口或module.exports其他方式工作,但它是….无论如何,如果你想编辑你的答案,包括这个评论,我会接受它