无法创建yeoman webapp

时间:2014-06-28 06:01:03

标签: node.js yeoman yeoman-generator

当我尝试使用yeoman创建一个webapp时,我得到了这个。

/usr/local/lib/node_modules/yo/node_modules/insight/node_modules/configstore/configstore.js:66
                throw err;
                      ^
Error: EACCES, permission denied '/root/.config/configstore/insight-yo.yml'
You don't have access to this file.

    at Object.fs.openSync (fs.js:436:18)
    at Object.fs.writeFileSync (fs.js:975:15)
    at Object.create.all.set (/usr/local/lib/node_modules/yo/node_modules/insight/node_modules/configstore/configstore.js:56:8)
    at Object.Configstore (/usr/local/lib/node_modules/yo/node_modules/insight/node_modules/configstore/configstore.js:19:11)
    at new Insight (/usr/local/lib/node_modules/yo/node_modules/insight/lib/insight.js:23:34)
    at process.<anonymous> (/usr/local/lib/node_modules/yo/node_modules/insight/lib/push.js:11:16)
    at process.emit (events.js:98:17)
    at handleMessage (child_process.js:322:10)
    at Pipe.channel.onread (child_process.js:349:11)

我用谷歌搜索,我尝试了以下的事情,但它没有帮助:

chown root /root/.config/configstore/insight-yo.yml 

chown myusername /root/.config/configstore/insight-yo.yml 

安装npm-sudo-fix并运行它,但没有运气。

我在Debian Wheezy,并且有npm 1.4.4。

7 个答案:

答案 0 :(得分:11)

我遇到了同样的问题。我运行下面的命令,它解决了我的问题:

mkdir -p /root/.config/configstore

chmod g+rwx /root /root/.config /root/.config/configstore

答案 1 :(得分:3)

同样的问题发生在我身上,我在root模式下用户#。我只是回到普通用户$并且它有效。我正在使用Zorin OS

答案 2 :(得分:1)

我能够通过运行来解决这个问题:

echo prefix = ~/.node >> ~/.npmrc

export PATH=$HOME/.node/bin:$PATH

这里的解释:

Error installing yeoman
What does `echo prefix = ~/.node >> ~/.npmrc` mean?
npm / yeoman install generator-angular without sudo

答案 3 :(得分:1)

我刚刚在Windows中修复了它。我已经完成了三件事,其中一件已经解决了,我不确定。

以管理员身份运行cmd提示。

takeown /?此命令相当于chown(linux)但对于windows。

cacls -cacls /E /T /G :F

只需进入$USER /Users/calvin/.config/configstore/并将文件取消隐藏。

它对我来说就像魅力一样。很多天以来我一直试图解决这个问题。

答案 4 :(得分:1)

我在Ubuntu上构建一个meanjs应用程序时遇到了同样的问题,我使用sudo代替root解决了这个问题:

sudo npm install -g yo generator-meanjs bower grunt

然后我可以构建应用程序,而不会再被要求输入密码:

yo meanjs
  

sudo允许用户在没有root登录的情况下以root身份运行,使用sudo而不是以root身份登录更安全。   sudo vs root - askubuntu

答案 5 :(得分:0)

问题在于,未授予yo使用某些nodejs模块的权限。基本上,问题与节点包经理&#34; npm&#34;的授权有关,要解决此问题首先运行此命令

sudo npm install --global yo --allow-root

答案 6 :(得分:0)

虽然chmod command似乎最初工作,但我后来遇到了类似的错误,对于另一个文件夹。但here我发现这个解决方法也解决了这个问题:

sed -i -e '/rootCheck/d' "${NPM_CONFIG_PREFIX}/lib/node_modules/yo/lib/cli.js"

如果yo以root身份运行,rootCheck将降级为UID 1000(在Linux上)或501(在OS X上)。这会导致权限错误。但是在docker容器中,您可能希望以root用户身份运行,因此您没有其他选择。

升级yeoman后需要重新运行此命令。如果未定义NPM_CONFIG_PREFIX,您可以使用:

export NPM_CONFIG_PREFIX=$(npm config get prefix)