npm ERR integrity checksum failed when using sha wanted xxxx but got yyyy

一个很久没有动过的前端流水线,发现怎么都编不过。在我本地也编不过。问了厂商,厂商也一筹莫展,没给什么好的建议:

npm ERR! Verification failed while extracting @babel/types@7.12.5.

image-20230525午後81829074

为此,我甚至还专门装了和厂商相同的 node 和 npm 的版本,依旧不行,恼人。

本着遇事不决先问 gpt 的精神,问了它,他给的办法都没啥用。

image-20230525午後81657915

都试着运行了一下,作为半桶水的前端,实在是头大,也并没有什么卵用。看来还是得靠Google 自个儿慢慢看了。

我比较懂得 php 相关的项目,composer 也是使用 lock 文件作为版本管理的一个快照切片一样的东西。

事实上,删掉 lock 文件再 install 是个好办法,肯定可以成功的。成功后我对比了 lock 文件,和先前的有诸多变动。作为新人我实在没有勇气将这个前端文件的 lock 文件删掉重新 install,生怕出现其他错误更难查找问题。

于是用了保守的办法,直接改了 lock 文件里的内容,先搜索第一个 sha1 的值,然后替换成了第二个 sha1 的值:

image-20230525午後82942262

终于能编过了~~

参考资料


chrome 允许跨域

在开发环境 chrome 最容易遇到这种问题:blocked by CORS policy

image-20230525午後80457113

最简单的办法是,改用 Firefox。

如果一定要用 Chrome ,可以用一下几个办法关闭 CORS 检测:

Windows

复制一个 chrome 浏览器的快捷方式,在属性中找到打开路径,在 …chrome.exe 后面加上

--args --disable-web-security --user-data-dir="C:/ChromeDevSession"

Mac

在终端中执行命令

open -a 'Google Chrome' --args --disable-web-security --user-data-dir=/tmp/chrome_dev_test

扩展程序的方式

cros-anywhere


Mac homebrew 备忘

这一篇会保持更新吧。因为不是一次性的工具。遇到 homebrew 问题以后就往这里记录了。

  1. 查看配置

    brew config
    

    image-20230522午前114815453

  2. 更新 brew 信息

    brew update
    

    image-20230522午後00757587

    遇到了报错: ` fetching failed`。。。

    原因是我电脑上跑的 clash 的混合端口,git 配置为 sock5 端口代理有问题。要改成用 http 代理端口

    git config --global http.https://github.com.proxy 'http://127.0.0.1:7890'
    

天翼云增加子账号并给子账号设置权限

不得不说天翼云的智障帮助机器人,以送佛送一半的心态,把我带进了坑里。这里简单提一下我怎么找到给天翼云开子账号和配权限的过程。

1. 帮助中心

image-20230518午後83916689

点击右下角,问问智能客服:

image-20230518午後84027903

image-20230518午後84108792

2. 工单

image-20230518午後84309283

3. 开通子账号

image-20230518午後84409901

一直到这里都还行。


linux 查看nginx 启动路径

缺人进程的pid:

ps aux | grep nginx

查看 pid 的路径:

ls -alh /proc/[pid]/exe

2531684225579

确认 nginx 使用的配置文件:

$ /home/app/midware/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

在 M1 Mac 中安装 x86 的 Windows

今天在我的 M1 MacBook Air 上运行了 x86 版本的 Windows 7。在这里做个简单的记录。

安装步骤

  1. 下载并安装 UTM

    首先,访问 UTM 官方网站 下载 UTM 应用。按照提示安装到你的 Mac 上。

  2. 准备好一个 Windows x86 ISO 文件

    需要注意的是,不是所有的 x86 都能在 UTM 上运行。

    我就尝试了好几个 win 10/7 的镜像,都是可以安装,但是到最后运行的时候都会报错。

    你需要在官网上确认,他们测试过必然能跑的镜像:https://mac.getutm.app/gallery/

    image-20230516午後80223847

    进入 Windows 7 的内容:

    可以找到 Requirements 部分的内容,写的非常清楚,需要的是这样的一个镜像:

    en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso

    对应的 hash 值是 36ae90defbad9d9539e649b193ae573b77a71c83.

    image-20230516午後80308966

    在很多地方都能下载到,例如 我在这里下载的:en_windows_7_ultimate_with_sp1_x64_dvd_u_677332

  3. 导入镜像

    image-20230516午後80624660

    选择第二个“emulate”:

    image-20230516午後80647255

    一路往下操作就好:

    Screenshot 1

  4. 安装完成后就可以简单使用了:

    Screenshot 6

  5. 虽然官网上有与宿主机 Mac 共享文件夹的功能,安装这个软件即可: SPICE guest tools

    Screenshot 7

    但我始终没能成功。

    我最后的解决办法是在宿主机 Mac 上用 Python 起临时服务器解决的:

    python3 -m http.server 9000
    

    image-20230516午後81129229

    在虚拟机内访问 Mac 的 ip:9000 即可:

    Screenshot 8

遇到的问题

  1. 安装某些软件提示 NSIS ErrorError launching installer:

    image-20230516午後81358552

    一般是下载网上的软件,保存的路径上有中文导致的。因为系统是纯英文的,对中文支持不太好。

    简单把文件挪到桌面就可以跳过这个问题了。

  2. 无法安装 chrome 和 edge。

    换过不下 10 个版本的离线版 chrome 和 edge,都提示有问题。

    这时候还是得靠 360 极速浏览器。

    但要注意的是,还是挺耗资源的。我看系统监控里的 cpu 常常 100%。

  3. 中文语言包

    除了装 win7,我还装了 xp。但是 xp 的中文支持不行。

    Screenshot 10

    我单独下了个语言包:http://download.microsoft.com/download/WindowsXPEmbedded/Update/2002/NT5XP/EN-US/LANGCHS.exe

    但是装好以后就启动不了的,也就不折腾了。所以有需要的同学注意一下。

总结

UTM 是一个基于 QEMU 的虚拟机,同时也具备模拟器的功能。虚拟化和模拟的主要区别在于它们处理硬件和软件的方式。

虚拟化是在物理硬件上创建虚拟硬件的过程,然后在这些虚拟硬件上运行操作系统和应用程序。虚拟机可以运行与宿主机不同的操作系统。例如,在一台运行 macOS 的 Mac 上,你可以使用虚拟化软件运行 Windows 或 Linux。

模拟器则是用来模拟不同的硬件平台,它可以在一种硬件架构上模拟另一种硬件架构。例如,你可以在一台 ARM 架构的 Mac(如 M1 Mac)上使用模拟器运行 x86 架构的 Windows。

因此,我们在 M1 Mac 上使用 UTM 运行 x86 的 Windows,UTM 需要通过模拟来实现这种硬件架构的转换。这个过程需要大量的计算资源,因此会感觉 Windows 比较卡,尤其是在运行 chrome 等这种占用内存很大的软件。我目前虚拟机里的 CPU常常会飙到 100%。

虚拟化和模拟都有各自的优点和缺点。虚拟化在性能上比模拟更优秀,但需要与宿主机相同的硬件架构。模拟则可以在不同的硬件架构之间进行转换,但会牺牲一些性能。

目前 UTM 也可以在 iOS 上运行。改天我再记录相关的操作。

参考资料