"请尝试再次以root / Administrator"运行此命令尝试安装LESS时出错

时间:2014-10-28 15:48:09

标签: node.js linux less

我试图在我的机器上安装LESS并且已经安装了节点。但是,当我输入"节点安装-g less"我收到以下错误,不知道该怎么办?

FPaulMAC:bin paul$ npm install -g less
npm ERR! Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR!  { [Error: EACCES, unlink '/usr/local/lib/node_modules/less']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/less' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 13.3.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! cwd /usr/local/bin
npm ERR! node -v v0.10.33
npm ERR! npm -v 1.4.28
npm ERR! path /usr/local/lib/node_modules/less
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR! error rolling back Error: EACCES, unlink '/usr/local/lib/node_modules/less'
npm ERR! error rolling back  { [Error: EACCES, unlink '/usr/local/lib/node_modules/less']
npm ERR! error rolling back   errno: 3,
npm ERR! error rolling back   code: 'EACCES',
npm ERR! error rolling back   path: '/usr/local/lib/node_modules/less' }
npm ERR! not ok code 0

11 个答案:

答案 0 :(得分:66)

Re Explosion Pills"安装可以运行任意脚本并使用sudo运行它可能非常危险!"

似乎使用sudo是错误的做法。

"将/ usr / local文件夹中文件的所有者更改为当前用户:"

sudo chown -R $USER /usr/local

然后运行安装

node install -g less

退房:

答案 1 :(得分:31)

老实说这是来自npm的错误建议。安装可以运行任意脚本,并使用sudo运行它可能非常危险!您可以sudo npm install -g less全局安装它,但我建议您更新您的npm设置:

#~/.npmrc
prefix=~/.npm_modules

然后你可以更新你的路径:

#~/.bashrc or ~/.zshrc, etc.
export PATH=$PATH:$HOME/.npm_modules/bin

然后,您不需要root权限来执行安装,您仍然可以使用二进制文件。

但这仅适用于您的用户。如果您希望整个系统能够使用该模块,您必须告诉每个人添加您的路径。更复杂和更健壮的解决方案包括添加一个文件夹,其中包含一个组可以安装的节点模块/二进制文件,并将 添加到每个人的路径中。

答案 2 :(得分:23)

只需将sudo添加到命令的开头。 如前所述,安装运行一些可能很危险的脚本,但我看到全局安装有很多帮助并且更简单。

运行sudo npm install -g less

答案 3 :(得分:13)

这肯定会有所帮助。回答npm本身。 https://docs.npmjs.com/getting-started/fixing-npm-permissions

以下是从网址中提取的,以方便您使用。

选项1:将权限更改为npm的默认目录

  1. 找到npm&#39目录的路径:

    npm config get prefix

  2. 对于许多系统,这将是/ usr / local。

      

    警告:如果显示的路径只是/ usr,请切换到选项2或您   会弄乱你的权限。

    1. 将npm目录的所有者更改为当前用户的名称(您的用户名!):

      sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

    2. 这会更改npm和其他一些工具(lib / node_modules,bin和share)使用的子文件夹的权限。

      选项2:将npm的默认目录更改为另一个目录

      1. 为全局安装创建目录:

        mkdir ~/.npm-global

      2. 配置npm以使用新目录路径:

        npm config set prefix '~/.npm-global'

      3. 打开或创建〜/ .profile文件并添加以下行:

        export PATH=~/.npm-global/bin:$PATH

      4. 返回命令行,更新系统变量:

        source ~/.profile

      5. 测试:在不使用sudo的情况下全局下载软件包。

        `npm install -g jshint`
        

        代替步骤2-4,您可以使用相应的ENV变量(例如,如果您不想修改~/.profile):

        NPM_CONFIG_PREFIX=~/.npm-global

        选项3:使用能够解决此问题的包管理器

        如果您在Mac OS上全新安装Node,则可以使用Homebrew软件包管理器完全避免此问题。 Homebrew使用正确的权限开箱即用。

        brew install node

答案 4 :(得分:4)

我一直遇到这个问题,因为Windows正在将我的node_modules文件夹设置为Readonly。请务必取消选中此项。

enter image description here

答案 5 :(得分:1)

这是我开始使用Less编译器以避免OP中提到的问题所必须做的事情:

  1. 安装node.js
  2. 使用终端安装NPM:sudo npm install npm -g
  3. 使用终端安装Less编译器:sudo npm install -g less(sudo完全不同)
  4. 如果你正在使用PHPstorm:转到“首选项...>插件”并安装 NodeJS -plugin(可能需要“浏览存储库”才能找到它)并重新启动PHPstorm(根据提示)
  5. 之后再次转到插件:安装 Less compiler (可能 需要“浏览存储库”才能找到它并重启PHPstorm(如 提示)
  6. 设置完项目后,请转到“设置>工具> Filewatchers“并添加”Less“。(”Program“)的路径应该是类似的 这个:/usr/local/bin/lessc
  7. 确保在6。
  8. 的设置中选中仅跟踪根文件

答案 6 :(得分:1)

当您收到EACCES(错误:访问)错误时,

npm有一个关于fixing npm permissions的官方页面。该页面甚至还有一个视频。

  

您可以使用以下两个选项之一解决此问题:

     
      
  1. 将权限更改为npm的默认目录。
  2.   
  3. 将npm的默认目录更改为另一个目录。
  4.   

答案 7 :(得分:1)

在我的情况下,我需要从5.3.0→5.4.2更新npm版本。

在我使用这个-- npm i -g npm之前..我需要运行两个完全解决了我的问题的命令。它甚至很可能解决你的问题。

第1步:sudo chown -R $USER /usr/local

第2步:npm install -g cordova ionic

在此之后你应该将你的npm更新到最新版本

第3步:npm i -g npm

然后你很高兴。希望这解决了你的问题。 干杯!!

答案 8 :(得分:0)

我也遇到了问题。这就是我所做的:

  1. 从控制面板卸载nodeJs>卸载程序
  2. 用户中有2个文件夹// appData / roaming - > npm文件夹和npm-cache文件夹。删除这两个。
  3. 现在,转到nodeJS站点,然后重新安装。在安装选项中选择第二个选项(即npm包)。安装它。你现在必须解决问题。

答案 9 :(得分:0)

我知道这是一个古老的问题,但没有一个解决方案似乎是一个好习惯,因此我正在解决这个问题:

尝试使用Homebrew解决此问题,但它也在/usr/local directory安装节点,这会再次导致EACCES错误。

要使用像nvm这样的版本管理器获取更多信息,请参阅官方npm guide

  

适用于各种operating system

nvm在用户的 HOME FOLDER 中安装节点及其模块,从而解决EACCES问题。

答案 10 :(得分:0)

在安装expo cli时我遇到了这个问题,并按照npm文档here中提到的四个步骤进行了修复。

问题是npm的某些版本无法找到软件包全局安装的文件夹。按照这些步骤,我们可以在用户的​​Home目录中创建或修改.profile文件,并在该目录中为其指定适当的PATH,因此它就像一个超级按钮一样工作。

试试看,这对我有帮助,我花了一个小时来解决这个问题。我的节点版本是6.0

我遵循的步骤

备份计算机。 在命令行的主目录中,创建用于全局安装的目录:

class RTC_EXPORT PeerConnectionInterface :public rtc::RefCountInterface {...};

配置npm以使用新的目录路径:

class Myclass{...}

在您喜欢的文本编辑器中,打开或创建〜/ .profile文件并添加以下行:

mkdir ~/.npm-global

在命令行上,更新系统变量:

npm config set prefix '~/.npm-global'

要测试新配置,请在不使用sudo的情况下全局安装软件包:

export PATH=~/.npm-global/bin:$PATH