node.js - 尝试使用 VSTS 构建 Electron 应用程序失败,提示“错误请尝试以 root/管理员身份再次运行此命令。”
问题描述
使用 VSTS 构建 Electron 应用程序,但我的 NPM 任务一直存在问题:
我不是开发人员,我是开发人员,试图让它在运行 npm install VSTS 任务的 VSTS 中构建,这看起来不错,但后来我在我的命令所在的地方运行 npm 自定义任务,npm run electron-build
然后它失败了。
我以 root 管理员身份运行它,所以我不确定为什么会出现该消息。
另外:如果我 rdp 到上面有 vsts 代理的 VM 并运行相同的 NPM 命令,它只会在 VSTS 构建它时构建它失败。
这是我从 VSTS 得到的输出
50375 verbose unlock done using C:\Users\LGBUILDADMIN\AppData\Roaming\npm-cache\_locks\staging-c7d6f0879aedfd51.lock for E:\Agents\LG-04\_work\244\s\node_modules\.staging
50376 verbose stack Error: EPERM: operation not permitted, scandir 'E:\Agents\LG-04\_work\244\s\node_modules\fsevents\node_modules\dashdash\node_modules'
50377 verbose cwd E:\Agents\LG-04\_work\244\s
50378 verbose Windows_NT 6.3.9600
50379 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\LGBUILDADMIN\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "install"
50380 verbose node v8.11.1
50381 verbose npm v5.5.1
50382 error path E:\Agents\LG-04\_work\244\s\node_modules\fsevents\node_modules\dashdash\node_modules
50383 error code EPERM
50384 error errno -4048
50385 error syscall scandir
50386 error Error: EPERM: operation not permitted, scandir 'E:\Agents\LG-04\_work\244\s\node_modules\fsevents\node_modules\dashdash\node_modules'
50386 error { Error: EPERM: operation not permitted, scandir 'E:\Agents\LG-04\_work\244\s\node_modules\fsevents\node_modules\dashdash\node_modules'
50386 error stack: 'Error: EPERM: operation not permitted, scandir \'E:\\Agents\\LG-04\\_work\\244\\s\\node_modules\\fsevents\\node_modules\\dashdash\\node_modules\'',
50386 error errno: -4048,
50386 error code: 'EPERM',
50386 error syscall: 'scandir',
50386 error path: 'E:\\Agents\\LG-04\\_work\\244\\s\\node_modules\\fsevents\\node_modules\\dashdash\\node_modules' }
50387 error Please try running this command again as root/Administrator.
50388 verbose exit [ -4048, true ]
Error: Npm failed with return code: 4294963248
这里也是 package.json。
{
"name": "sds",
"version": "0.0.0",
"license": "MIT",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build --prod",
"test": "ng test --sourceMap=false --watch",
"lint": "ng lint",
"e2e": "ng e2e",
"tslint": "tslint -p tsconfig.json -e src/main.ts -e src/polyfills.ts -e src/test.ts -e e2e/src/*.ts",
"format-all": "prettier --write **/*.{ts,js,css,scss,json}",
"format": "pretty-quick --staged",
"electron": "electron .",
"electron-build": "ng build --prod --base-href ./ && electron .",
"package-mac": "ng build --prod --base-href ./ && electron-packager . --overwrite --platform=darwin --arch=x64 --prune=true --out=release-builds",
"package-win": "ng build --prod --base-href ./ && electron-packager . sds --overwrite --asar=false --platform=win32 --arch=ia32 --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"SDS\"",
"package-linux": "ng build --prod --base-href ./ && electron-packager . sds --overwrite --asar=false --platform=linux --arch=x64 --prune=true --out=release-builds"
},
"private": true,
"main": "main.js",
"dependencies": {
"@angular/cli": "6.0.0",
"@angular/animations": "6.0.0",
"@angular/common": "6.0.0",
"@angular/compiler": "6.0.0",
"@angular/core": "6.0.0",
"@angular/forms": "6.0.0",
"@angular/http": "6.0.0",
"@angular/platform-browser": "6.0.0",
"@angular/platform-browser-dynamic": "6.0.0",
"@angular/router": "6.0.0",
"@types/lodash": "^4.14.110",
"angular-fastclick": "^1.0.4",
"core-js": "^2.5.7",
"hammerjs": "^2.0.8",
"latest": "^0.2.0",
"lodash": "^4.17.10",
"rxjs": "^6.2.1",
"shelljs": "^0.8.2",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular-devkit/build-angular": "^0.6.8",
"@angular/cli": "6.0.0",
"@angular/compiler-cli": "6.0.0",
"@angular/language-service": "6.0.0",
"@types/jasmine": "^2.8.8",
"@types/jasminewd2": "~2.0.2",
"@types/node": "^6.0.113",
"codelyzer": "^4.4.2",
"electron": "^1.8.7",
"electron-packager": "^12.0.2",
"husky": "^0.14.3",
"jasmine-core": "~2.8.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~2.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "^1.4.3",
"karma-jasmine": "^1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"npm-run-all": "^4.1.3",
"prettier": "^1.13.7",
"pretty-quick": "^1.6.0",
"protractor": "~5.1.2",
"ts-node": "~4.1.0",
"tslint": "~5.9.1",
"tslint-config-prettier": "^1.13.0",
"typescript": "2.7.2"
}
}
解决方案
我的问题的答案是我使用了错误的 cli 命令并且正在构建然后立即运行该应用程序,这将导致超时,因为该应用程序仍在后台运行。我更改为仅构建应用程序的命令,并且从那以后一直有效。
推荐阅读
- javascript - 尝试在 React 中调用函数
- bash - Go exec.Command 似乎无法将信息通过管道传输或附加到 .txt 文件。我的语法错了吗?
- java - 下载时加密的文件名,而不是预期的语言,即阿拉伯语
- json - 将 Spark DataFrame 中的 JSON 解析为新列
- python - Python:编辑字典键 - 使用 Strip 方法
- ios - 如何快速加载框架中的自定义字体?
- javascript - onclick,滚动到动态生成的div
- c++ - 选择 Y 继续后,我的程序一直关闭
- java - 如何重新打包JDK9的模块
- swift - 出现错误:多个 AVPlayer 实例