2017-08-22 60 views
2

当前代码/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

+0

我本来打算指向你这个 - 似乎相似。 https://stackoverflow.com/questions/13051961/proper-way-to-reference-files-relative-to-application-root-in-node-js –

+0

不知道为什么,但'__dirname'似乎总是像对我来说是个诡计 - 就像他们想要在几年前消除的东西 – jcollum

+1

我并不完全不同意这一点。我很惊讶,我没有立即发现这个话题。 –

回答

相关问题