在使用Node.js开发客户端应用时,可能会有获取计算机名的需求,以区分用户的多个设备。
这里所说的计算机名称(ComputerName),也称为设备名称(DeviceName),用户可以自定义自己的设备名称。
在 Windows 系统中,在此电脑(计算机、我的电脑)图标上右键,选择属性可以找到。显示如下:
在 Mac 系统中,在“系统设置→共享”中可以看到,显示如下:
新版的 Mac 系统把名称移到了“通用→关于本机”,“本地主机名”在“通用→共享”中:
背景介绍完毕,看一下 Node 如何获取设备名称。
在 Windows 中,我们可以通过 Node 内置的 os 模块中的 hostname() 方法来获取:
const os = require('os');
const hostname = os.hostname();
console.log(hostname);
如果是在 Mac 系统,使用 hostname() 方法获取计算机名称,你或许会得到:bogon
,并不是用户设置的“名称”。
在 Mac 系统,可以借助执行 MacOS 中的 scutil
命令,在终端执行:
scutil --get ComputerName # 获取名称
scutil --get LocalHostName # 获取本地主机名
在 Node 当中,可以借助 child_process
执行 shell 命令:
const os = require('os');
const childProcess = require("child_process");
const computerName = childProcess.execSync('scutil --get ComputerName'); ## execSync 为同步方法,也可以使用 exec
console.log(computerName.toString());
当然,为了完成上述 Mac 和 Windows 的区分,我们可以使用 os.platform():
const os = require('os');
const platform = os.platform();
您的赞助将会支持作者创作及本站运维
发表评论