我编写了一个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
错误。
任何线索都是这种文件应该以跨平台兼容的方式编写?
答案 0 :(得分:1)
如果您正在寻找能够编写文件的代码,无论哪个用户运行它,那么实际上只有一个答案:当前用户a)唯一保证的文件夹是能够写入,以及b)在访问相同路径的不同用户之间不会遇到冲突,是用户自己的主目录。
您可以使用类似的方法来获取当前用户可以访问的路径:
var homePath = process.env.HOME || process.env.USERPROFILE; // POSIX || Win32
var moduleDataPath = path.join(homePath, ".wikidata-cli");
if (!fs.existsSync(moduleDataPath))
fs.mkdirSync(moduleDataPath);