app-root-path在linux上不能正确返回绝对path?

我正在构build一个os-agnostic npm包,它使用了它自己的一些子模块。 在我的Mac上,我require使用app-root-path的模块,如下所示:

 var path = require('path'); var appRoot = require('app-root-path'); var packageJson = JSON.parse(fs.readFileSync(path.join(appRoot.path, 'node_modules', 'myModule', 'package.json')).toString()); 

这和预期的一样。

但是它在Linux上失败(我认为它也会在Windows上失败),因为上面的app-root-path包不像mac那样返回正确的path。

 return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); ^ Error: ENOENT: no such file or directory, open '/usr/local/lib/node_modules/myModule/bin/node_modules/myModule/package.json' at Error (native) at Object.fs.openSync (fs.js:584:18) at Object.fs.readFileSync (fs.js:431:33) at Object.<anonymous> (/usr/local/lib/node_modules/myModule/bin/commands.js:247:33) at Module._compile (module.js:425:26) at Object.Module._extensions..js (module.js:432:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:313:12) at Function.Module.runMain (module.js:457:10) at startup (node.js:138:18) 

为什么是这样?

我怎样才能让它工作,而不用担心主机操作系统(mac / linux / windows)?

请注意,我在这个问题上使用了stackoverflow的答案/提示。

Solutions Collecting From Web of "app-root-path在linux上不能正确返回绝对path?"