app-root-path在linux上没有正确返回绝对路径?

时间:2016-01-28 21:38:20

标签: linux node.js windows path

我正在构建一个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上那样返回正确的路径。

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上使用了这个question上的答案/提示。

0 个答案:

没有答案