Получите мою ОС из оболочки node.js

Как я могу получить доступ к своей ОС из оболочки node?

Контекст: я пишу script в node, что я хочу открыть файл с программой по умолчанию, а команды для этого различаются в разных ОС.

Я пробовал стандартные javascript-способы получения ОС, но они не работали (по очевидным причинам нет navigator в node).

Можно ли это сделать без установки нестандартных модулей?

Ответ 1

предупреждение: это может быть устаревшим

в 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')

Я думаю, что нет простого способа, как мультиплатформенный "запустить" любой файл с его "стандартным приложением", вам нужно будет выяснить, как это сделать в каждой ОС/среде рабочего стола, и сделать это после обнаружения ОС.

Ответ 2

Теперь существует модуль os: Node Документы модуля ОС. Он имеет функцию для получения платформы os.platform

Документы не дают возвращаемых значений. Итак, я документировал некоторые из них ниже. Результаты для Ubuntu 12.04 64-бит, OS X 10.8.5, Windows 7 64-бит и Joyent SmartMachine, соответственно. Тесты проводились на Node 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'

SmartMachine

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

Примечание. В Windows 7 64-разрядный Node может неверно сообщить os.arch() как ia32. Это документированная ошибка: os.arch должна быть архитектура ОС, а не процесса

Ответ 4

просто используйте os.platform, как указано

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

os.platform()

Возвращает платформу операционной системы. Возможные значения: "darwin", "freebsd", "linux", "sunos" или "win32". Возвращает значение process.platform.