我写了一个 CLI 模块,wikidata-cli ,对于某个命令 ( wd props
) 将结果缓存为模块目录中的文件:node_modules/wikidata-cli/props/some-file
。它在我的本地设置中工作,其中 Node 和 npm 安装在我的主文件夹中(使用 nvm ),但是其他人从他们的包管理器安装了 Node/npm,可能具有 sudo 权限,遇到 issues :一旦安装,模块将失去修改模块目录的权限,并且会出现类似EACCES: permission denied, open '/usr/lib/node_modules/wikidata-cli/props/de.json'
我尝试在安装后脚本期间更改访问权限 - "postinstall": "mkdir -p props && chown -R 666 props"
- 但不得不 revert它正在阻止任何带有 operation forbidden
错误的安装。
有什么线索表明这种文件应该以跨平台兼容的方式编写吗?
最佳答案
如果您正在寻找能够写入文件的代码,无论哪个用户运行它,那么实际上只有一个答案:当前用户 a) 保证能够写入的唯一文件夹,并且b) 不会遇到不同用户访问相同路径的冲突,是用户自己的home目录。
您可以使用类似这样的方法来导出当前用户绝对可以访问的路径:
var homePath = process.env.HOME || process.env.USERPROFILE; // POSIX || Win32
var moduleDataPath = path.join(homePath, ".wikidata-cli");
if (!fs.existsSync(moduleDataPath))
fs.mkdirSync(moduleDataPath);
关于node.js - 模块应该在哪里写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41781700/