我应该如何加载我自己模块中的文件?

时间:2017-08-22 22:49:32

标签: node.js require

/config/index.js

中的当前代码
const options = (require('js-yaml')).safeLoad(
  (require('fs')).readFileSync(`./config/default-config.yaml`, "utf8"));

module.exports = options;

工作正常。直到我在我的其他项目中发布并使用它。然后,由于./config/default-config.yaml在该项目中不存在,因此无法自然找到该文件。

我能想到的唯一选择是检查文件是否存在于该路径,然后尝试从node_modules/@company/alpha-gamma/config/default-config.yaml加载它。这看起来真的太烂了。

配置对象很大,有200多个键。我不认为它属于代码。

加载模块中存在的文件的最佳解决方案是什么?我需要能够在发布之前加载它以进行单元测试,并在另一个模块需要库时在运行时加载它。

也许最好的选择是使用json,因为我可以使用require模块加载它,而不是fs

1 个答案:

答案 0 :(得分:1)

我相信您可以使用__dirname来引用存储在应用程序根目录中的文件。

如此处所述: Proper way to reference files relative to application root in Node.JS