如何修复“fsevents@1.2.9的不支持平台:期望为{"os":"darwin","arch":"any"}(当前为{"os":"win32","arch":"x64"})”问题

106

测试二进制 二进制是正常的 npm警告回滚node-pre-gyp@0.12.0失败(这可能是无害的):

EPERM:操作不允许,lstat'C:\Users\orca yoon\Documents\IonicProjects\starters\epic\node_modules\fsevents\node_modules'

npm注意创建了一个lockfile作为package-lock.json。您应该提交此文件。

npm警告可选跳过依赖项:fsevents@1.2.9(node_modules\fsevents):

npm警告notsup可选跳过依赖项:不支持fsevents@1.2.9的平台:想要{"os":"darwin","arch":"any"}(当前:{"os":"win32","arch":"x64"})

从1050个贡献者中添加了1105个软件包并在445.94秒内审核了53269个软件包 发现1个高严重性漏洞 运行npm audit fix修复它们,或使用npm audit获取详细信息


这个回答解决了你的问题吗?有没有办法通过编辑package.json来消除npm可选依赖项警告? - OrangeDog
14个回答

47
  • 首先,

管理员 身份运行你的命令提示符powershell。然后你会避免出现权限错误

  • 其次,

忽略npm audit fix。它只是建议你将所有package.json依赖项更新到最新状态。你应该保留在package.json中指定的设置。

  • 第三,

如果你在Ubuntu或OS X上工作,我想你不会遇到这个问题。


备注:

根据你的回复,我想考虑一下解决方案。

  • 删除本地的node_modulespackage-lock.json
  • 使用npm cache verify清除npm缓存
  • 通过sudo npm i -g npm来更新全局的npm
  • 通过npm i重新安装本地的node_modules

希望这能帮到你。


3
在 Ubuntu 虚拟机上工作时出现了相同的错误。npm 警告 notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm verb notsup SKIPPING OPTIONAL DEPENDENCY: Valid OS: darwin npm verb notsup SKIPPING OPTIONAL DEPENDENCY: Valid Arch: any npm verb notsup SKIPPING OPTIONAL DEPENDENCY: Actual OS: linux - Koji D'infinte
22
以上内容无法帮助你。fsevents 是一个仅在 macOS 上使用的包,即使你删除 node_modules 文件夹并重新安装,这个警告也不会消失。 在我的应用程序(vue.js v2.6)中,fseventsfuse.js 的依赖项,用于某些功能。我已经习惯了这些警告。 - Devtrix.net
6
如果你正在使用Ubuntu或OS X工作,我想你不会遇到这个问题。 什么?Ubuntu是Linux系统,而不是Darwin系统,当然你也会遇到相同的问题! - mastazi
2
我正在使用Ubuntu 20.04,PS對我來說運作正常。 - tarcnux
1
天啊,你的回答帮了我很大的忙!!!谁能从一个裸的chokidar依赖关系混乱中推断出npm需要升级呢?幸运的是,你的回答在我需要为客户做演示之前及时出现并拯救了我的晚上。就在这些步骤之后,我调用了 [code] npm cache verify #再次验证缓存,现在已经升级了npm,以防万一... npm i --legacy-peer-deps #需要它们之前的版本,以防万一 [/code]对我来说,它像魔法一样奏效了。 现在npm run serve又可以正常工作了。 非常感谢你! - Noctumsempra
显示剩余2条评论

30

我找到了解决方案,这是我所做的:

打开你的package-lock.json文件。

找到node_modules/fsevents,在里面有一个叫做"os"的东西,我只有这个:

 "os": [
        "darwin",
      ],

我的操作系统是Windows 10 64位,我刚刚将我的操作系统添加到“os”中,结果是这样的:

 "os": [
        "darwin",
        "win32"
      ],

然后保存就可以了,这样做之后我就能够安装那个我一直想要安装但是一直无法安装的包了。


7
这看起来像是一个不太正规的解决方法,但对我来说这是唯一有效的。谢谢。 - Kajuna
3
一样啊,还是一如既往的肮脏,但我会接受它然后走人,哈哈。 - saricden
2
这是我发现的最不侵入性的解决此问题的方法,它也适用于Linux。感谢Victor,谢谢! - gnclmorais

23

由于我今天才开始处理这个问题,我阅读了第一个解决方案但首先尝试了一件事

首先删除package-lock.jsonnode_modules目录

运行这些命令,它应该可以工作。

rm -rf node_modules package-lock.json
npm install

很顺利地解决了问题,也许能帮助其他人。


1
正是我需要的阅读内容!谢谢你分享,Ali! - Jeff Poulton
1
仍未解决,错误仍然相同。 - Berni

18

当在ionic或其他地方看到这种消息时,请运行npm audit fix,并尝试成功地按照给出的建议解决所有“高严重性漏洞”问题,并将更新后的依赖项贡献回所给出的代码库。

这里发生的情况是使用了一个名为chokidar的软件包来“监视”文件系统目录中的“事件”(例如添加文件)。chokidar是Linux、Windows和Mac特定的文件系统监视软件包的包装器,其中fsevents是Mac版本。因此,我非常确定任何使用chokidar的东西都将把fsevents作为可选依赖项,但正如其他人所说,可以安全地忽略这个WARN消息,因为chokidar支持所有常见的桌面架构。


6

如果像我一样,因为同时使用两个不同的包管理器(例如yarn和npm)而出现了此问题,您可以简单地删除锁定文件并重新运行您的包管理器。

rm package-lock.json

在下次运行软件包管理器时,锁定文件将被重新生成。我在尝试用npm upgrade升级软件包时遇到了这个错误。删除锁定文件后,升级过程顺利进行,并且锁定文件被正确创建。

3

如果您在项目中添加了IOS平台,并在Windows或Linux上运行npm i,则会出现此警告。由于您无法在这些系统上构建IOS软件包,因此可以安全地忽略此警告。


2

我遇到了同样的问题:

  1. 删除 package-lock.json 文件
  2. 运行 npm install 命令

完美解决,问题得到了解决。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

2

在以管理员模式打开命令提示符或PowerShell后,帮助我的是按照这个答案here进行操作。

我运行了以下命令:npm i --force,这似乎解决了问题。


0
尝试将节点版本升级到8.5.0。版本>=8可以解决此问题。

0

对我来说,关键的突破其实很简单:

yarn remove fsevents

我通过在 yarn.lock 文件中使用 ctrl + f 查找 'fsevents' 来验证它是否有效。在删除之前,它出现了 9 次,删除后只有 8 次。所以我知道它产生了一些影响。

额外信息

在删除 fsevents 后:

git add .
git commit -m "Removed fsevents"
git push heroku master

它起作用了。


请注意,我还必须运行bin/webpack-dev-server 来查看资产是否预编译(最好在本地尝试此操作,以便您可以快速解决任何缺陷,而不是在heroku上构建需要时间)。
我使用诸如yarn add '@rails/activestorage' '@rails/ujs'等命令来解决任何缺少的库,并且当应用程序到达heroku时,它可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接