我正在使用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”中的相对路径应如何工作? 我是否需要做一些让他们以我期望的方式工作的东西?
谢谢!
答案 0 :(得分:1)
通常,当前目录的路径以./
开头,表示当前目录。你的src/Hello.js
所拥有的是路径搜索,它似乎包含项目文件夹。
我理解,require ./
和../
是相对于它所需要的文件,或者至少这对我来说一直都有效。如果它不是从这些中的任何一个开始那么它通常会尝试路径搜索。
jasmine-node不是我的经验所基于的节点。
jasmine-node可能有不同的路径定义,这就是路径搜索似乎有效的原因。
如果没有破坏不修复它? :)
问题原来是我不小心。我忘了做module.exports。我解决了这个问题,现在一切都按照我的预期进行。不确定为什么它在没有任何导出或module.exports的情况下以其他方式工作,但它是....无论如何,如果你想编辑你的答案以包含这个评论,我会接受它