微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node_modules/bcrypt:命令失败 node-pre-gyp:权限被拒绝

如何解决node_modules/bcrypt:命令失败 node-pre-gyp:权限被拒绝

故事

上周我重新安装了我的 kubuntu,接下来我想处理存储在另一个硬盘上的项目。

当我使用 Yarn Install 时出现以下错误(请参阅下面的 §log)。

在重新安装 kubuntu 之前一切正常。

规格

hadock in ~ 
➜ nvm -v  
0.37.2

hadock in ~ 
➜ node -v
v15.8.0

hadock in ~ 
➜ npm -v 
7.5.1

hadock in ~ 
➜ yarn -v
1.22.10

hadock in ~ 
➜ git --version
git version 2.27.0

我的package.json

{
  "name": "api","private": true,"version": "1.0.0","scripts": {
    "prebuild": "rimraf dist","build": "nest build","format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start": "nest start","dev": "NODE_ENV=development nest start --watch","dev:win": "SET NODE_ENV=development&& nest start --watch","start:debug": "nest start --debug --watch","start:prod": "node dist/src/main","lint": "eslint \"{src,apps,libs,test}/**/*.ts\"","test": "jest","test:watch": "jest --watch","test:cov": "jest --coverage","test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:e2e": "jest --config ./test/jest-e2e.json","generate-data": "node scripts/generate-dev-data-index.js"
  },"dependencies": {
    "@nestjs/common": "^7.4.4","@nestjs/core": "^7.4.4","@nestjs/jwt": "^7.1.0","@nestjs/mongoose": "^7.0.2","@nestjs/passport": "^7.1.0","@nestjs/platform-express": "^7.4.4","@nestjs/swagger": "^4.6.1","@nestjs/testing": "^7.4.4","@vonage/server-sdk": "^2.10.4","aws-sdk": "^2.790.0","bcrypt": "^5.0.0","body-parser": "^1.19.0","class-transformer": "^0.3.1","class-validator": "^0.12.2","dotenv": "^8.2.0","exifreader": "^3.12.6","express": "^4.17.1","faker": "^5.1.0","google-libphonenumber": "^3.2.15","jsonapi-serializer": "^3.6.6","jwt-decode": "^3.1.2","mongodb": "^3.6.2","mongoose": "^5.11.15","multer": "^1.4.2","nestjs-pino": "^1.2.0","passport": "^0.4.1","passport-jwt": "^4.0.0","passport-local": "^1.0.0","reflect-Metadata": "^0.1.13","rimraf": "^3.0.2","rxjs": "^6.6.3","sharp": "^0.26.2","sib-api-v3-typescript": "^2.0.2","swagger-ui-express": "^4.1.4"
  },"devDependencies": {
    "@nestjs/cli": "^7.5.1","@nestjs/schematics": "^7.1.2","@shelf/jest-mongodb": "^1.2.3","@types/aws-sdk": "^2.7.0","@types/bcrypt": "^3.0.0","@types/body-parser": "^1.19.0","@types/dotenv": "^8.2.0","@types/express": "^4.17.8","@types/faker": "^5.1.2","@types/google-libphonenumber": "^7.4.19","@types/jest": "^26.0.14","@types/jsonapi-serializer": "^3.6.3","@types/node": "^14.11.8","@types/passport": "^1.0.4","@types/passport-jwt": "^3.0.3","@types/sharp": "^0.26.1","@types/supertest": "^2.0.10","@typescript-eslint/eslint-plugin": "^4.4.0","@typescript-eslint/parser": "^4.4.0","eslint": "^7.11.0","eslint-config-airbnb-base": "^14.2.0","eslint-config-prettier": "^6.12.0","eslint-plugin-import": "^2.22.1","jest": "^26.5.3","jest-serial-runner": "^1.1.0","pino-pretty": "^4.3.0","prettier": "^2.1.2","supertest": "^5.0.0","ts-jest": "^26.4.1","ts-loader": "^8.0.4","ts-node": "^9.0.0","tsconfig-paths": "^3.9.0","typescript": "^4.0.3"
  },"jest": {
    "displayName": {
      "name": "API","color": "blue"
    },"verbose": true,"runner": "jest-serial-runner","testSequencer": "../src/_test/config/sequencer.jest.js","setupFiles": [
      "../src/_test/config/dotenv.module.ts"
    ],"modulefileExtensions": [
      "js","json","ts"
    ],"rootDir": "src","testRegex": ".spec.ts$","transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },"collectCoverageFrom": [
      "**/*.(t|j)s"
    ],"coverageDirectory": "../coverage","testEnvironment": "node","preset": "@shelf/jest-mongodb","testTimeout": 30000
  }
}

日志

[4/4] Building fresh packages...
⠁ 
[6/6] ⠂ mongodb-memory-server
[2/6] ⠂ bcrypt
[3/6] ⠂ exifreader
[4/6] ⠂ sharp
verbose 24.479452317 
verbose 24.558439202 Error: /home/hadock/samus/Projects/rm/rm-api/node_modules/bcrypt: Command Failed.
Exit code: 126
Command: node-pre-gyp install --fallback-to-build
Arguments: 
Directory: /home/hadock/samus/Projects/rm/rm-api/node_modules/bcrypt
Output:
/bin/sh: 1: node-pre-gyp: Permission denied
    at ProcesstermError.ExtendableBuiltin (/home/hadock/.nvm/versions/node/v15.8.0/lib/node_modules/yarn/lib/cli.js:721:66)
    at ProcesstermError.MessageError (/home/hadock/.nvm/versions/node/v15.8.0/lib/node_modules/yarn/lib/cli.js:750:123)
    at new ProcesstermError (/home/hadock/.nvm/versions/node/v15.8.0/lib/node_modules/yarn/lib/cli.js:790:113)
    at ChildProcess.<anonymous> (/home/hadock/.nvm/versions/node/v15.8.0/lib/node_modules/yarn/lib/cli.js:25884:17)
    at ChildProcess.emit (node:events:378:20)
    at maybeClose (node:internal/child_process:1067:16)
    at Socket.<anonymous> (node:internal/child_process:453:11)
    at Socket.emit (node:events:378:20)
    at Pipe.<anonymous> (node:net:665:12)
error /home/hadock/samus/Projects/rm/rm-api/node_modules/bcrypt: Command Failed.
Exit code: 126
Command: node-pre-gyp install --fallback-to-build
Arguments: 



我的测试

  • git clone 项目,yarn -> 不起作用
  • 从包中卸载 bcrypt 并通过 yarn install bcrypt 重新安装 -> 不起作用
  • 卸载 nvm 和 yarn 并重新安装,yarn install -> 不起作用
  • 我在项目文件中检查了我的权限,每个文件都设置为我的用户 drwxrwxr-x hadock hadock
  • 我做了 npm install -g node-gyp & rm -rf node_modules & yarn 修复了错误但得到了一个错误 (opencollective: Permission denied)
[4/4] Building fresh packages...
[1/6] ⠂ @nestjs/core
[2/6] ⠂ bcrypt
[3/6] ⠂ exifreader
[4/6] ⠂ sharp
verbose 35.698648389 /bin/sh: 1: opencollective: Permission denied
verbose 35.744661021 Error: /home/hadock/samus/Projects/rm/rm-api/node_modules/bcrypt: Command Failed.
Exit code: 126
Command: node-pre-gyp install --fallback-to-build
Arguments: 
Directory: /home/hadock/samus/Projects/rm/rm-api/node_modules/bcrypt
Output:
/bin/sh: 1: node-pre-gyp: Permission denied
    at ProcesstermError.ExtendableBuiltin (/home/hadock/.nvm/versions/node/v15.8.0/lib/node_modules/yarn/lib/cli.js:721:66)
    at ProcesstermError.MessageError (/home/hadock/.nvm/versions/node/v15.8.0/lib/node_modules/yarn/lib/cli.js:750:123)
    at new ProcesstermError (/home/hadock/.nvm/versions/node/v15.8.0/lib/node_modules/yarn/lib/cli.js:790:113)
    at ChildProcess.<anonymous> (/home/hadock/.nvm/versions/node/v15.8.0/lib/node_modules/yarn/lib/cli.js:25884:17)
    at ChildProcess.emit (node:events:378:20)
    at maybeClose (node:internal/child_process:1067:16)
    at Socket.<anonymous> (node:internal/child_process:453:11)
    at Socket.emit (node:events:378:20)
    at Pipe.<anonymous> (node:net:665:12)
error /home/hadock/samus/Projects/rm/rm-api/node_modules/bcrypt: Command Failed.
Exit code: 126
Command: node-pre-gyp install --fallback-to-build
Arguments: 

不起作用或不相关

编辑 2021 年 2 月 15 日 - 1

我已经在我的操作系统驱动器中克隆了该项目,一切正常。

所以我运行 chmod -R ug+rwx XXXX,其中 XXXX 是我的项目驱动器。

但是 yarn install 不起作用。

我一直在寻找。

编辑 2021 年 2 月 15 日 - 2

问题是权利的问题。

我不得不在 fstab 文件(挂载选项部分)中更改我的第二个驱动器在启动时挂载的方式:

+ UUID="12345" /home/hadock/samus ext4 defaults 0 1

解决方法

我的一个容器中的一个 ubuntu 映像遇到了同样的问题:

您可以在计算机上尝试 $("button").click(function(){ $(this).html("the new text"); });

sudo apt-get install build-essential

更具体(推荐用于图片)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。