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

时间:2021-02-15 11:50:37

标签: node.js linux bcrypt node-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

1 个答案:

答案 0 :(得分:0)

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

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

sudo apt-get install build-essential

更具体(推荐用于图片)