Win7下支持的最高版本Node为13.14.0,通过特殊方法也能安装更高版本的,但不可避免会出现一些奇奇怪怪的问题。
比如这里,我在执行 npm login
时就出现了uv_os_gethostname returned ENOSYS错误。
这里只要强行把 os.hostname
函数替换掉,不让它调底层的uv_os_gethostname就行。
如果是你自己项目里的代码,那比较好办,直接在项目入口执行下面的代码就行:
const os = require('os')
os.hostname=()=>"localhost"
但 npm login
是自带的脚本,就需要找到npm的入口文件,这里我找到的是node安装目录下的 nodejs\node_modules\npm\bin\npm-cli.js
这个文件,将它修改成如下代码即可:
#!/usr/bin/env
const os = require('os') //新增
os.hostname=()=>"localhost" //新增
require('../lib/cli.js')(process)
以此类推,任何情况下,找到程序入口的js文件,替换 os.hostname
即可。