当前位置: 首页 > 知识库问答 >
问题:

NPM/错误:EACCES:权限被拒绝,scandir[重复]

颜安宁
2023-03-14

当我键入“npm run build: prod”时

build:prod
    npm run build -- --configuration production --aot --optimization=false

我得到这个错误:

> fancy-name@0.0.0 build:prod
> npm run build -- --configuration production --aot --optimization=false

glob error [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] {
 errno: -13,
 code: 'EACCES',
 syscall: 'scandir',
 path: '/root/.npm/_logs'
}
npm WARN logfile Error: EACCES: permission denied, scandir '/root/.npm/_logs'
npm WARN logfile  error cleaning log files [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] {
npm WARN logfile   errno: -13,
npm WARN logfile   code: 'EACCES',
npm WARN logfile   syscall: 'scandir',
npm WARN logfile   path: '/root/.npm/_logs'
npm WARN logfile }
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠙ : WARN logfile Error: EACCES: permission denied, scandir '/root/.npm/_logs'
> fancy-name@0.0.0 build
> ng build "--configuration" "production" "--aot" "--optimization=false"

Node.js version v17.4.0 detected.file Error: EACCES: permission denied, scandir '/root/.npm/_logs'
Odd numbered Node.js versions will not enter LTS status and should not be used for production. For more information, please see https://nodejs.org/en/about/releases/.
This version of CLI is only compatible with Angular versions ^13.0.0-next || >=13.0.0 <14.0.0,ogs'
but Angular version 12.1.3 was found instead.

Please visit the link below to find instructions on how to update Angular.
https://update.angular.io/

我已尝试删除node\u模块

编辑:用chown-R根 /path/of/your/project解决

共有3个答案

微生旻
2023-03-14

GLOB错误[错误:EACCES:权限被拒绝,scandir'/root/. npm/_logs']{

这意味着它正在尝试读取“根”目录中的某些内容,这些内容总是需要根访问权限。

尝试像这样运行命令:

sudo npm run build:prod

额外:通常您不应该使用sudo运行命令。如果您来自Windows背景,请将其视为“以管理员身份运行”,只有更多权限,因此如果您运行恶意脚本,它可以访问您系统上的几乎所有内容。有一些JS库需要root/sudo访问权限才能完成他们的工作

公沈浪
2023-03-14

NPM非常努力(请参阅其他答案了解详细信息)不以root身份执行任何操作。那就试试吧,不要成为root?你会这样做

  1. 添加本地用户(AMI指南),通常是adduser john。doe—禁用密码
夏侯华彩
2023-03-14

这是一个令人困惑的错误,可以理解;您以root用户身份运行npm,但它表示您无权访问这些文件?有一个很好的理由:)这些问题本质上是关于同一件事的:

  • fs。readFileSync在使用“npm”调用时抛出EACCESS,但不使用“node”

我相当长的回答详细介绍了正在发生的事情,但本质是这样的:

(NPM)...使用这段代码来确定以谁的身份运行:

常量{uid,gid}=isRoot?推断所有者。同步(cwd):{}

正如infer-所有者模块的文档所说:根据其最近的现有父级的所有者推断路径的所有者

因此,如果您以root身份运行NPM,则需要将当前目录的所有者也更改为root:

chown -R root /path/of/your/project

但所有这些问题都应该向您指出真正的解决方案:不要以root身份运行NPM。您不知道什么样的脚本可以作为安装后触发器或类似的触发器运行。是安全的;仅在必要时使用root帐户使用sudo。

如相关答案所述:

此行为仅适用于NPM版本

  • npm安装-g nvm
 类似资料:
  • 我试图运行一个本地Jenkins管道使用Jenkinsfile的nodejs应用程序使用节点:6-alpin图像(默认)使用build.sh脚本使用调用npm安装然后我得到了以下权限错误 npm ERR!错误:EACCES:权限被拒绝,mkdir'/. npm'npm ERR!在错误(本机)npm ERR!{错误:EACCES:权限被拒绝,mkdir'/. npm'npm ERR!在错误(本机)n

  • 问题内容: 我运行 npm install lodash, 但它抛出 错误:EACCES:权限被拒绝 错误。我知道这是权限问题,但据我所知,本地安装节点模块不需要sudo权限。如果我使用sudo运行它,它将安装在〜/ node_modules文件夹中。 drwxrwxr-x 是现有文件夹的文件许可权。我不知道可能出了什么问题。 下面是错误消息。 问题答案: 使用 npm init 创建 packa

  • 我运行npm install lodash,但它抛出错误:EACCES:权限被拒绝错误。我知道这是权限问题,但据我所知,在本地安装节点模块不需要sudo权限。如果我用sudo运行它,它会安装在~/node\u modules文件夹中。drwxrwxr-x是现有文件夹的文件权限。我不知道可能出了什么问题。 下面是错误消息。

  • 命令:npm安装-gnpm@latest 结果: npm错误!代码EACCES npm ERR!系统调用重命名npm错误!路径/usr/local/lib/node_modules/。暂存/npm-3e479054/node_模块/字符串宽度npm错误!dest/usr/local/lib/node_modules/。暂存/字符串宽度-fa87d55b npm错误!错误-13 npm错误!错误:E

  • 我试图在MacOS10.12上安装sudoNPM-gappium。5. 我得到这个错误: 信息Chromedriver安装为平台“mac”和架构“64”安装Chromedriver版本“2.30” 信息Chromedriver安装打开临时文件以将Chromedriver\u mac64写入。。。 错误:EACCES:权限拒绝,mkdir “/usr/local/lib/node_modules/a

  • 我遇到一个例外,当我试图打开FileInputStream时,文件打开权限被拒绝。 这是stacktrace: 是的,我在清单中有权限: