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其他方式工作,但它是….无论如何,如果你想编辑你的答案,包括这个评论,我会接受它