核心功能
-
返回硬件架构
返回字符串表示系统的硬件架构,常见值包括:
'x86_64'
:64 位 x86 架构(Intel/AMD)'armv7l'
:32 位 ARM 架构(如树莓派 3B)'aarch64'
:64 位 ARM 架构(如树莓派 4B)'ppc64le'
:64 位 PowerPC 小端架构(IBM 服务器)
-
与
os.arch()
的区别os.machine()
:基于操作系统报告的硬件架构os.arch()
:基于 Node.js 二进制文件编译时的架构
示例 :
在 64 位 ARM Linux 服务器上运行 Node.js:
javascriptconsole.log(os.machine()); // 输出 'aarch64'(系统架构) console.log(os.arch()); // 输出 'arm64'(Node.js 架构)
使用场景
-
硬件兼容性检查
javascriptconst supportedArchitectures = ['x86_64', 'aarch64']; if (!supportedArchitectures.includes(os.machine())) { console.error('不支持的硬件架构:', os.machine()); process.exit(1); }
-
动态配置优化
javascriptlet config; switch (os.machine()) { case 'x86_64': config = require('./config/x86.json'); break; case 'aarch64': config = require('./config/arm.json'); break; default: config = require('./config/default.json'); }
-
日志与调试
javascriptconsole.log(`系统信息: - 平台: ${os.platform()} - 架构: ${os.machine()} - 内核版本: ${os.release()}`);
跨平台输出示例
运行环境 | os.machine() 输出 |
---|---|
64 位 Ubuntu Linux | 'x86_64' |
树莓派 4B (64 位) | 'aarch64' |
macOS M1/M2 | 'arm64' |
Windows 11 (64 位) | 'AMD64' |
IBM Power9 服务器 | 'ppc64le' |
注意事项
-
容器环境
在 Docker 容器中运行时,
os.machine()
返回容器宿主机的架构,而非容器自身的架构。 -
Windows 特殊值
Windows 平台可能返回
'AMD64'
(64 位)或'x86'
(32 位),需注意与 Linux 平台的命名差异。 -
版本兼容性
os.machine()
在 Node.js 14.14.0+ 版本中稳定支持,建议升级到最新 LTS 版本。
底层实现
- Linux :通过
uname -m
命令获取 - macOS :通过
sysctl -n hw.machine
获取 - Windows :通过
GetNativeSystemInfo
API 获取处理器架构
通过合理使用此 API,可以实现硬件级别的兼容性检查和配置优化,尤其在需要针对不同架构部署二进制文件时(如 Native 模块编译)。