【问题标题】:Get my OS from the node.js shell [duplicate]从 node.js shell 获取我的操作系统 [重复]
【发布时间】:2011-09-26 22:02:18
【问题描述】:

如何从节点外壳访问我的操作系统?

上下文:我正在节点中编写一个脚本,我想用默认程序打开一个文件,执行此操作的命令因操作系统而异。

我尝试了获取操作系统的标准 javascript 方法,但没有成功(出于显而易见的原因,节点中没有 navigator)。

是否可以在不安装非标准模块的情况下做到这一点?

【问题讨论】:

  • 好的,所以在办公室四处询问之后,这是基本上有效的答案(它会弹出 CYGWIN for Windows,但是嘿) var os = require("os"); os.type();
  • 我假设你已经尝试过nodejs.org/docs/v0.4.9/api/fs.html?
  • fs 没有完成工作;操作系统会。应该已经猜到了,但我是 node 新手。

标签: javascript node.js operating-system


【解决方案1】:

现在有一个os 模块:Node OS Module Docs。有获取平台的功能os.platform

文档不提供返回值。所以,我在下面记录了一些。结果分别适用于 Ubuntu 12.04 64 位、OS X 10.8.5、Windows 7 64 位和 Joyent SmartMachine。在节点 0.10 上进行的测试。

Linux

  • os.type()'Linux'
  • os.platform()'linux'
  • os.arch() : 'x64'

OS X (Mac)

  • os.type()'Darwin'
  • os.platform()'darwin'
  • os.arch() : 'x64'

窗口

  • os.type() : 'Windows_NT'
  • os.platform() : 'win32'
  • os.arch()'x64'

智能机器

  • os.type()'SunOS'
  • os.platform()'sunos'
  • os.arch()'ia32'

注意:在 Windows 7 64 位节点上,os.arch() 可能会错误地报告为 ia32。这是一个记录在案的错误:os.arch should be the architecture of the OS not of the process

【讨论】:

  • 在 Mac 上,os.platform()darwin。不确定类型/架构,因为大多数现代 Mac 都是通用的,或者两者都是 x86/x64。
  • @Qix 谢谢!幸运的是,我今天恰好坐在 Mac 前,所以我也可以添加其余部分! :D
  • 感谢您提供示例,让我的 switch 语句更容易编写!
  • 注意os.platform() 等价于process.platform
【解决方案2】:

警告:这可能已经过时了

node.js 中没有navigator 对象,因为它不在浏览器中运行。它在系统中运行。导航器的“等效”是process。该对象包含许多信息,例如

process.platform // linux

如果你想运行一个网络浏览器,你必须执行它..

var sys = require('sys')
// open google in default browser
// (at least in ubuntu-like systems)
sys.exec('x-www-browser google.com')

这可能不适用于较新的 node.js 版本(我有 2.x),您可能必须使用

var child_process = require('child_process')
child_process.exec('x-www-browser google.com')

我想没有简单的方法可以使用其“默认应用程序”在多平台上“运行”任何文件,您必须了解如何在每个操作系统/桌面环境中执行此操作,并在操作系统检测后执行此操作。

【讨论】:

  • process.platform 将返回与os.type() 略有不同的内容(请参阅我上面的评论);它提供了更少的粒度,但可能更一致。 node还没有内置跨平台的默认扩展检测,所以我目前使用child_process.exec向不同的操作系统发送不同的命令。
  • 这行得通,所以我会确认它。对于任何引用此问题的人,还请注意os.type()
【解决方案3】:

console.log('这个平台是' + process.platform);

您可以在http://nodejs.org/docs/v0.4.10/api/process.html#process.platform找到文档

我在带有节点 v0.4.10 的 Mac OS X 上对此进行了测试

【讨论】:

    【解决方案4】:

    只使用提到的 os.platform

    https://nodejs.org/api/os.html#os_os_platform

    os.platform()

    返回操作系统平台。可能的值为“darwin”、“freebsd”、“linux”、“sunos”或“win32”。返回 process.platform 的值。

    【讨论】:

      猜你喜欢
      • 2016-03-26
      • 1970-01-01
      • 2017-06-15
      • 2013-02-19
      • 2018-07-24
      • 1970-01-01
      • 2013-11-11
      • 2018-06-02
      • 2020-03-01
      相关资源
      最近更新 更多