我使用Windows 10的企业计算机。 我有nodejs v6.10.0和npm v3.10.10。 这是我第一次在这台计算机上安装nodejs / npm。
当我安装模块(任何类型的模块,例如npm install jsdoc
)时,一切正常。我可以多次打电话给我example.js
,一切都好。
但过了一段时间(随机期)我不能再运行我的程序,因为我得到以下错误:
>node example.js
module.js:96
throw e;
^
SyntaxError: Error parsing C:\my_path\node_modules\some_module\package.json: Unexpected token x in JSON at position 0
如果我用SublimeText检查package.json
的内容,我得到了:
78c0 b658 72a3 e0f5 7832 e7d4 b5ee dcc8
8f00 9951 3b8a cbd5 db7f 4556 5e8b e88d
087d 9bb8 ff15 9acb 0a09 7aaf afd3 ced2
3aa9 e2c5 7e7b c4a1 7b82 a332 2848 83ed
adca d7e8 3228 5537 64eb 3105 2338 6ae2
[...]
实际上,这个项目的package.json
下的所有node_modules
文件都已损坏....对于所有模块!
但是,如果我的项目文件夹中有package.json
,它就不会受到影响,只有node_modules
文件夹下的那些文件夹才会....
要解决此问题,我必须删除node_modules
并使用npm install
重新安装我的模块。不是很方便。
完成后,我的package.json
文件再次正确,并带有预期内容。
我认为它可能与我们的McAfee防病毒有关,但为什么它只会影响package.json
下的node_modules
个文件,而不会影响其他文件夹中的文件?
我在某处读到公司代理可以使用错误的编码下载package.json
,但是当我安装我的模块时,package.json
完全正常。
所以,如果有人有任何想法/领导,我会很感激!
修改: 自上次发布npm(5.x)以来,腐败已经停止了......我不知道它是否与它有关,或者是否安装了Windows更新,或者我的I / T部门推动了软件更新......
答案 0 :(得分:1)
我没有特定的修复方法可以尝试,但有一些通用的方法可以帮助你:
卸载/重新安装节点& npm - 显然,如果可能的话,你总是先尝试。
关闭所有不需要的服务/后台应用程序(尤其是扫描仪)并查看问题是否停止。如果是这样,请在测试时逐个缩小范围并逐个转换服务。也许制作一个脚本来运行你的应用程序足够多,通常会产生错误。
是否有运行中保存的构建工具? Gulp / Grunt?这也可能是罪魁祸首。
我猜你是否尝试了前两个建议,你会发现你的问题。
此外,您提到的只读内容很奇怪,但是您确定适当的策略可以让您设置这些权限吗? Windows有时会让人感到困惑,因为你可以更改权限,有时它看起来确实很顺利,但它们没有,你真的没有注意到,直到事情仍然没有工作,你回到再次检查权限。
答案 1 :(得分:0)
这很奇怪。与恶意软件无关的唯一原因可能是导致编码问题。 JSON唯一有效的编码是UTF-8,UTF-16和UTF-32(小端和大端),但package.json最安全的编码绝对是UTF-8(没有BOM)。
确保您永远不会在某些编辑器中打开它并将其保存在UTF-8以外的任何其他内容中。
腐败的另一个原因可能确实是恶意软件。
有关JSON和字符编码的更多信息,请参阅这些答案:
如果下载后一切正常,那么可能的解决方法是在成功安装后将每个package.json
文件设置为只读,并查看何时会看到无法写入错误的错误。
我要看一下的另一件事是,它是发生在每个目录中,还是只发生在您正在共享或同步的某些目录,或者是在网络安装的设备上。
答案 2 :(得分:0)
At this stage, if it was me, I'd be using the SysInternals Process Monitor: Don't assume anything specifically, and just monitor and log all I/O on your system until the files in question start changing. You can set Process Monitor up to record disk actions, and then filter the logs until you see which process is actually changing anything with .json
in the name. There will likely be a lot of logs, and you might have to spend a while sifting through them, but it should at least give you something to look at to at least answer the question "What program is changing these files?" instead of having to guess.
One other thought: If the files are changing and Process Monitor doesn't show anything at all, you may have a disk that is going bad. Consider doing all your work on a USB drive for a little while and see if the same results happen; if the files are getting corrupted on drive C:
but not on drive F:
(or whatever), that may suggest your disk is starting to fail. Particularly with SSDs, disks can do some weird things when they start to die.
Tracking these kinds of random file changes can be hard, but there are ways that you can identify the cause; don't give up hope, and you'll find it. Good luck!
答案 3 :(得分:0)
我在M.2 SSD上的文件上遇到类似的问题。 HDD项目运行良好,我从未遇到任何损坏。
node_modules
中的随机文件已损坏,服务/构建中断
到目前为止,我必须继续在SSD上执行此操作:
rm -rf node_modules
npm install
这是一个非常繁琐的过程,但是我别无选择。如果找到解决办法,我将更新答案。