让我们假设我有这样的项目结构:
root/
|
-- app.js
-- config.json
-- package.json
-- lib/
|
-- config/
|
-- config.js此外,让我们假设我想从config.json内部读取根config.js (以覆盖默认配置)。我可以做到以下几点:
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函数。
发布于 2015-05-26 19:47:37
你可以像这样对它进行硬编码
require('../../config')或者,您可以利用Node中的node_modules findup功能,并将config.json移动到node_modules/config/index.json。
root/
|
-- app.js
-- node_modules
|
-- config
|
-- package.json
-- index.json
-- package.json
-- lib/
|
-- config/
|
-- config.js那就用
require('config')https://stackoverflow.com/questions/30467514
复制相似问题