【问题标题】:Avoid using relative paths on require()避免在 require() 上使用相对路径
【发布时间】:2014-12-10 04:27:15
【问题描述】:

我是 NodeJs 的新手,我的项目正在增长,我不想进行相对导入,我希望从 npm 安装这些导入。

我有以下目录结构

项目 节点模块/ 源/ 模型/ 人.js 测试/ 模型/ 人.js 应用程序.js config.js

我正在使用猫鼬,我可以使用require('mongoose') 从任何地方要求猫鼬,但例如,如果需要我的人模型来自app.js,我写require('./model/person') 和我的test/model/person.js 我需要写@987654325 @。

以某种方式存在“本机”(无需安装更多依赖项)以使其在我的应用程序的任何位置都像 require('model/person')

【问题讨论】:

    标签: node.js


    【解决方案1】:

    这个话题是extensively discussed here。我的结论主要是:

    1. 将测试放在单独的目录中的想法是无效的。将测试放在主代码旁边:app/users/user.jsapp/users/user.test.js
    2. 我在node_modules/app 创建了一个指向../app 的符号链接,因此我可以从代码库中的任何位置require('app/users');

    【讨论】:

    • 符号链接可以解决问题,但您能解释一下为什么将测试放在单独的目录中无效吗?
    • 因为这个问题。一般来说,在尝试了其他方法之后,我想要模块化软件,其中所有紧密耦合的东西一起存在于文件系统中,而松散耦合的东西则相距甚远。测试与被测代码紧密耦合,因此请将它们放在一起。
    • 不知何故我不小心投了反对票。不幸的是,它已经超过 12 小时,所以我无法撤消它。如果您对答案进行编辑,我会修复它!
    【解决方案2】:

    没有什么说您不能将自己的代码放入 node_modules 中。这将使您能够根据需要引用它。如果你有一个 .gitignore 或等效的阻止 node_modules 中的代码被提交,你可以为你自己的代码添加异常。

    node_modules
    !node_modules/model/
    

    【讨论】:

      猜你喜欢
      • 2011-06-08
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 2018-08-26
      • 2020-11-12
      • 1970-01-01
      相关资源
      最近更新 更多