首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点/IO.js需要从项目根?

节点/IO.js需要从项目根?
EN

Stack Overflow用户
提问于 2015-05-26 19:43:23
回答 1查看 567关注 0票数 1

让我们假设我有这样的项目结构:

代码语言:javascript
复制
root/
|
-- app.js
-- config.json
-- package.json
-- lib/
   |
   -- config/
      |
      -- config.js

此外,让我们假设我想从config.json内部读取根config.js (以覆盖默认配置)。我可以做到以下几点:

代码语言:javascript
复制
const path = require('path');
let jsonConfig = {};
try {
  let moduleDir = path.dirname(process.mainModule.filename);
  jsonConfig = require(`${moduleDir}/config.json`);
} catch (e) {}

我的问题是,我应该吗?The 文献状态

检索require.main的替代方法。不同之处在于,如果主模块在运行时发生更改,require.main可能仍然引用更改发生前所需的模块中的原始主模块。通常,可以安全地假设这两个模块引用同一个模块。

我不知道什么条件会导致我的主模块在运行时改变。我认为这将是我自己明确做的事情,但我对运行时的内部结构还不太熟悉,无法确定地知道。

需要澄清的编辑:

我知道我可以使用一条相对路径,例如require('../../config.json')。但是,这使得在以后的某个时候重构/移动lib/config/config.js变得更加困难,如果这是我最后要做的事情。因此,我想要求相对于基本项目目录。

此配置还特定于应用程序。把它放在node_modules下的模块中不是我想要做的事情。我只将npm托管依赖项放在node_modules中。

我的问题更多地是关于依赖process.mainModule可能产生的潜在意外问题,而不是require函数。

EN

回答 1

Stack Overflow用户

发布于 2015-05-26 19:47:37

你可以像这样对它进行硬编码

代码语言:javascript
复制
require('../../config')

或者,您可以利用Node中的node_modules findup功能,并将config.json移动到node_modules/config/index.json

代码语言:javascript
复制
root/
|
-- app.js
-- node_modules
   |
   -- config
      |
       -- package.json
       -- index.json
-- package.json
-- lib/
   |
   -- config/
      |
      -- config.js

那就用

代码语言:javascript
复制
require('config')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30467514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档