读取包时出错:graceful-fs\package.json
Posted
技术标签:
【中文标题】读取包时出错:graceful-fs\\package.json【英文标题】:Error reading package: graceful-fs\package.json读取包时出错:graceful-fs\package.json 【发布时间】:2016-01-25 09:20:21 【问题描述】:我最近安装了 Node.js、npm、ionic 和 cordova,如 Ionic Getting Started 所述
现在,当我打开我的 Visual Studio 项目时,Bower/NPM 窗口显示以下错误:
System.AggregateException:发生一个或多个错误。 ---> Microsoft.NodejsTools.Npm.PackageJsonException:读取错误 package.json 在 'C:\Users\Colin\AppData\Roaming\npm\node_modules\cordova\node_modules\npm\node_modules\graceful-fs\package.json': 读取 package.json 时出错。该文件可能是可解析的 JSON,但可能 包含具有重复属性的对象。
这似乎是由于problem with the npm package。那么我该如何解决这个问题呢?我要安装较早版本的 Node、npm、cordova 还是 graceful-fs?我该怎么做?
编辑 根据 Vikas Vats 的评论,我运行了以下命令:
cordova -v
有人告诉我我的全球版本是 5.3.3
npm uninstall -g cordova
npm install -g cordova@4.3.0
我现在在 graceful-fs\package.json
中报告了相同的错误,但这次它位于不同的位置:
C:\Users\Colin\AppData\Roaming\npm\node_modules\ionic\node_modules\ionic-app-lib\node_modules\ionic-cordova-lib\node_modules\npm\node_modules\graceful-fs\package.json
【问题讨论】:
你的graceful-fs模块有问题。在记事本中打开它的package.json文件,检查这个文件中是否有重复的键。仅重新安装 cordova 包。 @VikasVats 是的,有重复的键,如我链接到的 npm 问题中所列。我尝试重新安装较早版本的 Cordova,现在我遇到了作为ionic-app-lib
的依赖项安装的优雅 fs/package.json 的问题。 (请参阅我的编辑)我正在考虑安装 npm
的早期版本,然后重新安装每个给我一个错误的软件包,但我是 npm
的初学者,所以不胜感激任何建议
我想你对那个 github 问题有你的答案
现在问题出在 ionic 包上。尝试重新安装它。确保版本相互兼容。
【参考方案1】:
来自https://github.com/npm/npm/issues/9965
在文本编辑器中打开 C:\Users\Colin\AppData\Roaming\npm\node_modules\ionic\node_modules\ionic-app-lib\node_modules\ionic-cordova-lib\node_modules\npm\node_modules\graceful-fs\package.json
并删除重复的根键:
根键在package.json
中只能出现一次
【讨论】:
是的,我曾在那里寻求解决方法。我想这可能会解决它,但是重复的键具有不同的值,所以我担心我会通过删除错误的键来破坏其他东西。相反,我现在已经回滚到以前的版本。【参考方案2】:我卸载了 cordova - 将其恢复为 Visual Studio 测试过的版本:
npm uninstall -g cordova
npm install -g cordova@4.3.0
这将错误转移到 ionic。于是我把 Ionic 带回了 1.6.5 版本:
npm uninstall -g ionic
npm install -g ionic@1.6.5
这修复了 graceful-fs/package.json 文件。我已经复制了这里的内容:
"author":
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
"url": "http://blog.izs.me"
,
"name": "graceful-fs",
"description": "A drop-in replacement for fs, making various improvements.",
"version": "2.0.0",
"repository":
"type": "git",
"url": "git://github.com/isaacs/node-graceful-fs.git"
,
"main": "graceful-fs.js",
"engines":
"node": ">=0.4.0"
,
"directories":
"test": "test"
,
"scripts":
"test": "tap test/*.js"
,
"keywords": [
"fs",
"module",
"reading",
"retry",
"retries",
"queue",
"error",
"errors",
"handling",
"EMFILE",
"EAGAIN",
"EINVAL",
"EPERM",
"EACCESS"
],
"license": "BSD",
"readme": "# graceful-fs\n\ngraceful-fs functions as a drop-in replacement for the fs module,\nmaking various improvements.\n\nThe improvements are meant to normalize behavior across different\nplatforms and environments, and to make filesystem access more\nresilient to errors.\n\n## Improvements over fs module\n\ngraceful-fs:\n\n* keeps track of how many file descriptors are open, and by default\n limits this to 1024. Any further requests to open a file are put in a\n queue until new slots become available. If 1024 turns out to be too\n much, it decreases the limit further.\n* fixes `lchmod` for Node versions prior to 0.6.2.\n* implements `fs.lutimes` if possible. Otherwise it becomes a noop.\n* ignores `EINVAL` and `EPERM` errors in `chown`, `fchown` or\n `lchown` if the user isn't root.\n* makes `lchmod` and `lchown` become noops, if not available.\n* retries reading a file if `read` results in EAGAIN error.\n\nOn Windows, it retries renaming a file for up to one second if `EACCESS`\nor `EPERM` error occurs, likely because antivirus software has locked\nthe directory.\n\n## Configuration\n\nThe maximum number of open file descriptors that graceful-fs manages may\nbe adjusted by setting `fs.MAX_OPEN` to a different number. The default\nis 1024.\n",
"readmeFilename": "README.md",
"bugs":
"url": "https://github.com/isaacs/node-graceful-fs/issues"
,
"_id": "graceful-fs@2.0.0",
"_from": "graceful-fs@2"
我还尝试了下一个 Ionic 版本 - 1.7.0
和最新版本 - 1.7.7
。问题又来了,所以我现在还是坚持 1.6.5
参考 Ionic releases
【讨论】:
以上是关于读取包时出错:graceful-fs\package.json的主要内容,如果未能解决你的问题,请参考以下文章