执行npm install报错:无有效pinkie-promise版本可用
解决npm install时"no valid versions available for pinkie-promise"错误
嘿,这个问题我之前碰到过,别慌,咱们一步步来搞定它!
首先得搞明白为什么会出现这个问题:pinkie-promise并没有直接出现在你的package.json里,因为它是你项目依赖的间接依赖(也就是某个依赖包的依赖)。这个包已经被官方废弃并从npm仓库移除了,而你当前用的npm版本(5.5.1)比较老旧,在解析依赖链的时候没办法正确处理这个已移除的包,所以才抛出了这个错误。
下面是具体的解决步骤:
第一步:清理npm缓存
旧缓存可能保留了pinkie-promise的无效信息,先强制清理掉:npm cache clean --force第二步:删除旧的依赖文件
移除项目里的node_modules文件夹和package-lock.json,避免残留的旧依赖干扰新的安装:# Linux/macOS 系统执行这两行 rm -rf node_modules rm package-lock.json # Windows 系统(命令提示符)执行这两行 rmdir /s node_modules del package-lock.json第三步:更新npm到最新版本
你当前用的npm 5.5.1是2017年的版本,对现代依赖解析的支持不够完善,更新到最新版本能避免很多类似的依赖问题:npm install -g npm@latest第四步:重新安装依赖
做完上面三步后,重新运行安装命令就可以了:npm install
补充说明
如果上面的步骤还是没解决问题,其实也不用太担心——pinkie-promise的功能已经被Node.js内置的Promise相关API替代了,新版本的依赖包大多已经不再依赖它。更新npm后,依赖解析系统会自动找到不需要pinkie-promise的依赖版本,顺利完成安装。
你的项目package.json内容
{ "name": "react-playlist", "version": "1.0.0", "description": "A simple react to-do list", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "npm run build", "build": "webpack -d && webpack-dev-server --content-base src/ --inline -- hot --port 1234 --history-api-fallback" }, "repository": { "type": "git", "url": "git+https://github.com/iamshaunjp/react-playlist.git" }, "keywords": [ "react" ], "author": "The Net Ninja", "license": "MIT", "bugs": { "url": "https://github.com/iamshaunjp/react-playlist/issues" }, "homepage": "https://github.com/iamshaunjp/react-playlist#readme", "dependencies": { "react": "^15.3.2", "react-dom": "^15.3.2", "react-router": "^3.0.0" }, "devDependencies": { "babel-core": "^6.16.0", "babel-loader": "^6.2.5", "babel-preset-es2015": "^6.16.0", "babel-preset-react": "^6.16.0", "css-loader": "^0.25.0", "style-loader": "^0.13.1", "webpack": "^1.13.2", "webpack-dev-server": "^1.16.1" } }
相关错误日志片段
1281 silly resolveWithNewModule commondir@1.0.1 checking installable status 1282 silly pacote range manifest for pkg-dir@^1.0.0 fetched in 3ms 1283 silly resolveWithNewModule pkg-dir@1.0.0 checking installable status 1284 silly pacote range manifest for find-up@^1.0.0 fetched in 2ms 1285 silly resolveWithNewModule find-up@1.1.2 checking installable status 1286 silly fetchPackageMetaData error for pinkie-promise@^2.0.0 No valid versions available for pinkie-promise 1287 silly pacote range manifest for path-exists@^2.0.0 fetched in 4ms 1288 silly resolveWithNewModule path-exists@2.1.0 checking installable status 1289 verbose type range 1290 verbose stack pinkie-promise: No valid versions available for pinkie-promise 1290 verbose stack at pickManifest (/usr/local/lib/node_modules/npm/node_modules/pacote/node_modules/npm-pick-manifest/index.js:19:11) 1290 verbose stack at fetchPackument.then.packument 1290 verbose stack at tryCatcher at runCallback (timers.js:800:20) 1290 verbose stack at tryOnImmediate (timers.js:762:5) 1290 verbose stack at processImmediate [as _immediateCallback] (timers.js:733:5) 1291 verbose cwd /root/Desktop/LeagueSystemWebApp 1292 verbose Linux 4.4.0-104-generic 1293 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" 1294 verbose node v9.2.1 1295 verbose npm v5.5.1 1296 error code ENOVERSIONS 1297 error No valid versions available for pinkie-promise 1298 verbose exit [ 1, true ]
内容的提问来源于stack exchange,提问作者Mantracker
相关产品推荐
相关产品推荐

