【发布时间】:2014-09-20 14:41:33
【问题描述】:
在安装foo 模块时,作为开发者,我想编写~/.foo.json 文件(其中~/ 是用户的主目录)。
为此,我在package.json:
{
...
"scripts": {
"preinstall": "./installation/preinstall.js"
},
...
}
在/installation/preinstall.js(即可执行)中,我有:
#!/usr/bin/env node
// Dependencies
var Fs = require("fs");
function getUserHome() {
return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'];
}
console.log("Creating configuration file ...")
Fs.writeFileSync(getUserHome() + "/" + ".foo.json", JSON.stringify(
require("./sample-config"), null, 4
));
运行sudo npm install ...@... -g 时,我得到以下输出:
ionicabizau@laptop:~$ sudo npm install ...@...-alpha1 -g
npm http GET https://registry.npmjs.org/...
npm http 304 https://registry.npmjs.org/...
> ...@...-alpha1 preinstall /usr/lib/node_modules/...
> ./installation/preinstall.js
Creating configuration file ...
fs.js:432
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: EACCES, permission denied '/home/ionicabizau/.foo.json'
at Object.fs.openSync (fs.js:432:18)
at Object.fs.writeFileSync (fs.js:971:15)
at Object.<anonymous> (/usr/lib/node_modules/.../installation/preinstall.js:11:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
为什么EACCESS 出错,即使我使用sudo 运行它?
运行 Ubuntu 14.04(如果相关)。
【问题讨论】:
标签: json node.js ubuntu permissions npm