【问题标题】:Node.js: How do relative paths in require statements work?Node.js:require 语句中的相对路径如何工作?
【发布时间】:2013-04-26 00:36:29
【问题描述】:

我正在使用jasmine-node 运行 jasmine 测试。我的项目具有“spec”和“src”文件夹的典型结构。

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

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

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

jasmine-node spec/HelloSpec.js

我收到错误消息,表明实际上并不需要 required 文件。但是如果我将 require 语句更改为:

require('src/Hello.js');

一切正常。因此,似乎 require 语句正在解析相对于我正在执行测试的文件夹的路径,而不是相对于它们自己的文件位置。但对我来说,它会像那样工作没有意义。

“require”中的相对路径应该如何工作? 我需要做些什么来让它们按我预期的方式工作吗?

谢谢!

【问题讨论】:

    标签: node.js jasmine jasmine-node


    【解决方案1】:

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

    我的理解是 require ./../ 与需要它的文件相关,或者至少这一直对我有用。如果它不以其中任何一个开头,那么它通常会尝试路径搜索。

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

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

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

    用正确的答案编辑

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

    【讨论】:

    • 嘿亚当,感谢您的回复,但不幸的是它坏了。使 jasmine-node 工作所需的路径将破坏所有典型工具,例如 browserify,我最终将使用它来将所有 .js 文件打包到单个 bundle.js 中,以包含在其中的 Web 应用程序中它们最终会被使用
    • 呃,问题原来是我粗心。我忘了做module.exports。我解决了这个问题,现在一切都按我预期的方式工作。不知道为什么它在没有任何导出或 module.exports 的情况下以其他方式工作,但它是....无论如何,如果您想编辑您的答案以包含此评论,我会接受它。
    猜你喜欢
    • 2021-03-16
    • 1970-01-01
    • 2018-06-04
    • 2020-07-23
    • 2021-05-18
    • 1970-01-01
    • 2010-10-03
    • 2010-10-01
    • 2011-07-16
    相关资源
    最近更新 更多