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

时间:2013-04-26 00:36:29

标签: node.js jasmine jasmine-node

我正在使用jasmine-node来运行茉莉花测试。我的项目有一个典型的结构,“spec”和“src”文件夹。

在我的“HelloSpec.js”文件中,我有:

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

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

jasmine-node spec/HelloSpec.js

我收到错误,表明实际上并未要求require d个文件。但是,如果我将require语句更改为:

require('src/Hello.js');
一切顺利。因此似乎require语句解析了相对于我执行测试的文件夹的路径,而不是相对于它们自己的文件位置。但对我而言,这样做是没有意义的。

“require”中的相对路径应如何工作? 我是否需要做一些让他们以我期望的方式工作的东西?

谢谢!

1 个答案:

答案 0 :(得分:1)

通常,当前目录的路径以./开头,表示当前目录。你的src/Hello.js所拥有的是路径搜索,它似乎包含项目文件夹。

我理解,require ./../是相对于它所需要的文件,或者至少这对我来说一直都有效。如果它不是从这些中的任何一个开始那么它通常会尝试路径搜索。

jasmine-node不是我的经验所基于的节点。

jasmine-node可能有不同的路径定义,这就是路径搜索似乎有效的原因。

如果没有破坏不修复它? :)

编辑正确的答案

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