让我假装我有一个类似的项目结构:
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) {}
我的问题是,我应该吗? documentation states:
检索require.main的备用方法。不同之处在于,如果主模块在运行时更改,则require.main可能仍会引用更改发生之前所需的模块中的原始主模块。通常可以安全地假设这两个模块指的是相同的模块。
我不知道什么条件会导致我的主模块在运行时更改。我认为这将是我自己明确做的事情,但我不熟悉运行时的内部以确定。
编辑以澄清:
我知道我可以使用相对路径,例如require('../../config.json')
。但是这使得以后重构/移动lib/config/config.js
更加困难如果这是我最终做的事情。因此我希望相对于基础项目目录。
此配置也特定于应用程序。将它放在node_modules
下的模块中并不是我想做的事情。我只将npm
托管依赖项放在node_modules
。
我的问题更多是关于依赖process.mainModule
而不是require
函数可能产生的潜在意外问题。
答案 0 :(得分:0)
你可以像这样硬编码
Picasso.with(getApplicationContext()).load(currentUrl).into(img, new Callback() {
@Override
public void onSuccess() {
mProgress.dismiss();
}
@Override
public void onError() {
mProgress.dismiss();
}
});
或者,您可以利用Node中的node_modules查找功能,并将require('../../config')
移至config.json
node_modules/config/index.json
然后使用
root/
|
-- app.js
-- node_modules
|
-- config
|
-- package.json
-- index.json
-- package.json
-- lib/
|
-- config/
|
-- config.js