昨天我使用npm install -g jsdoc
安装了JSDoc软件包并且使用得很好。今天当我再次尝试使用它时,我收到以下错误:
module.js:96
throw e;
^
SyntaxError: Error parsing ...npm\node_modules\jsdoc\node_modules\requizzle\package.json: Unexpected token } in JSON at position 0
at Object.parse (native)
at readPackage (module.js:92:52)
at tryPackage (module.js:102:13)
at Function.Module._findPath (module.js:172:20)
at Function.Module._resolveFilename (module.js:438:25)
at Function.Module._load (module.js:388:25)
at Module.require (module.js:468:17)
at require (internal/module.js:20:19)
我之前实际上已经多次这样做了,并且对软件包进行了彻底的重新安装修复了它,但我想知道是什么导致了这个错误以及是否有更永久的修复。
当我打开错误中提到的package.json
文件时,它看起来像一个带有一堆奇怪符号的二进制文件。
我看到第一个字符是}
,它解释了错误。事情是我下载的每个软件包的所有package.json文件都是这样的,它第一次工作,所以npm显然可以解析它。
修改
快速说明:我在办公室笔记本电脑上。
好的,所以我清理了node_modules
文件夹,并用npm install -g jsdoc
重新安装了jsdoc。我检查了package.json
文件:它都是纯文本,看起来很棒。
然后我关闭并启动了我的电脑。不仅jsdoc package.json
文件被混淆了,所有依赖项的package.json
文件也被混淆了!这个小错误是递归的!
为了进一步测试,我获取了json文件,将其复制并重命名为PACKAGE_DUP.json
并将其放在原始json文件旁边。我还拿了node_modules
文件夹并制作了一份名为NODE_MOD_DUP
的副本,再次在原文件旁边。所以现在有4个package.json
个文件:
node_modules/package.json
node_modules/PACKAGE_DUP.json
NODE_MOD_DUP/package.json
NODE_MOD_DUP/PACKAGE_DUP.json
当我重新启动计算机时,受影响的仅 json文件是package.json
文件夹中的node_modules
文件(项目编号1)。所以它被某种东西作为目标!
病毒扫描很干净,模块文件夹和整个系统中的每个其他json文件都完全没有受到损坏。此外,与节点捆绑在一起的模块附带的package.json
文件也能正常工作。它只是与npm install
一起安装的模块给我一个问题(无论是全局安装还是本地安装)。