Получите мою ОС из оболочки 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 должна быть архитектура ОС, а не процесса
Ответ 3
console.log( "Эта платформа -" + process.platform ");
Документацию можно найти в http://nodejs.org/docs/v0.4.10/api/process.html#process.platform
Я тестировал это на Mac OS X с node v0.4.10
Ответ 4
просто используйте os.platform, как указано
https://nodejs.org/api/os.html#os_os_platform
os.platform()
Возвращает платформу операционной системы. Возможные значения: "darwin", "freebsd", "linux", "sunos" или "win32". Возвращает значение process.platform.