как определить, установлен ли у меня 64-битный или 32-битный исполняемый файл узла?

90

На моем компьютере с Windows установлен nodejs. Я хотел бы определить, 64-битный он или 32-битный. Как это определить? Я казнил

node --help

но, похоже, у него нет возможности предоставить мне желаемую информацию.

runtimeZero
источник
coderwall.com/p/0eds7q Не уверен, что это помогает, поскольку просто указывает на арку ОС.
Silviu Burcea

Ответы:

112

Запустите это из командной строки:

node -p "process.arch"

Он вернет arm, ia32 или x64.

Чет
источник
Сработал как шарм в Win 10.
Мачадо
Работал как шарм!
Gásten
63

Если узел установлен и исполняется, вы можете просто запустить

c:\> node -p "process"    

и вы должны увидеть processотформатированное содержимое переменной. Там ключи archи platformуказывают вашу операционную систему. В примере ниже этоWindows 7 x64

{
    title : 'Administrator: C:\\Windows\\System32\\cmd.exe - node  ',
    version : 'v0.10.36',
    moduleLoadList :
    [   'Binding evals',
        ...
        'Binding signal_wrap',
        'NativeModule string_decoder'],
    versions : {
        http_parser : '1.0',
        node : '0.10.36',
        v8 : '3.14.5.9',
        ares : '1.9.0-DEV',
        uv : '0.10.30',
        zlib : '1.2.8',
        modules : '11',
        openssl : '1.0.1l'
    },
    arch : 'x64',
    platform : 'win32',
    argv : ['node'],
    execArgv : [],
    env : {
        ALLUSERSPROFILE : 'C:\\ProgramData',
        HOMEDRIVE : 'C:',
        JAVA_HOME : 'C:\\Program Files\\Java\\jdk1.8.0_05',
        NODEJS : 'C:\\Program Files (x86)\\nodejs\\',
        NUMBER_OF_PROCESSORS : '4',
        OS : 'Windows_NT',
        Path : 'C:\\ProgramData\\Oracle\\Java\\javapath;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;',
        PATHEXT : '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY',
        PROCESSOR_ARCHITECTURE : 'AMD64',
        PROCESSOR_IDENTIFIER : 'Intel64 Family 6 Model 42 Stepping 7, GenuineIntel',
        PROCESSOR_LEVEL : '6',
        PROCESSOR_REVISION : '2a07',
        ProgramData : 'C:\\ProgramData',
        ProgramFiles : 'C:\\Program Files', 
        'ProgramFiles(x86)' : 'C:\\Program Files (x86)',
        ProgramW6432 : 'C:\\Program Files',
        PROMPT : '$P$G',
        PUBLIC : 'C:\\Users\\Public',
        PYTHON : 'C:\\Python34',
        SESSIONNAME : 'Console',
        SystemDrive : 'C:',
        SystemRoot : 'C:\\Windows',
        windir : 'C:\\Windows',
        windows_tracing_flags : '3'
    },
    features : {
        ...
    },
    config : {
        ...
    }
}
Свен 31415
источник
Отличная работа, не используетсяrequire ('os');
Эндрю
3
Что platformговорит? Разве arch: x64, platform: win32вы не используете 32-битный узел на 64-битном процессоре?
sampathsris
2
@Krumia: Ну, «win32» часто относится к API, который Windows NT представила (и Windows 9x позже реализовала [часть]) под этим именем для 32-битных программ. Когда позже MS адаптировала API для поддержки как 32-битных, так и 64-битных программ, это, естественно, привело к тому, что первоначальное название «win32» стало несколько запутанным, поскольку теперь люди иногда используют его для обозначения 32-битного варианта API. или конкретно к i386 ABI; следовательно, называть этот API "win32" несколько вышло из моды. Однако он все еще используется даже для 64-разрядной версии API.
SamB
@Krumia: Суть всего этого: очень вероятно, что win32ничего не говорит о том, для какого набора инструкций создан node.js. Кроме того, вполне вероятно, что это x64означает, что это на самом деле 64-разрядная сборка. (В любом случае, это обязательно будет 64-битная ОС, поскольку вы не можете запускать x64-бинарные файлы в 32-битной ОС.)
SamB,
30

Если он работает в ОС Windows, просто следуйте старой школе ... с помощью диспетчера задач Windows .

Вот моя попытка: -

Просто запустите nodeиз командной строки.

C:\> node

Это переведет узел в режим REPL (обозначен >символом). Теперь откройте диспетчер задач (Ctrl + Shift + Esc), чтобы увидеть node.exeдетали процесса. Моя работает на 64-битной Windows 10 с установленным 32-битным узлом. Убедитесь, что вы включили столбец «Платформа», чтобы видеть 32- / 64-разрядную информацию.

введите описание изображения здесь

onelaview
источник
4
в Windows 10 это, похоже, отсутствует.
Мейрион Хьюз
3
@MeirionHughes нет, вам нужно специально добавить этот столбец в представление. Щелкните правой кнопкой мыши любой столбец и выберитеSelect columns
Мария Инес Парнисари
23

в Mac

$ node
 > require('os').arch()

в окнах

c:\> node
> require('os').arch()
HDK
источник
3
Это дает архитектуру ОС, а не узла
grisevg
3
Я тестировал 64-битную Windows 10 с node.js 6.4.0 32bit, и он вернулся ia32, так что это не архитектура ОС
Бернардо Рамос
3
The os.arch() method returns a string identifying the operating system CPU architecture for which the Node.js binary was compiled.Источник @grisevg : nodejs.org/api/os.html#os_os_arch
Андре Верланг
4

Что ж, способ, который я предлагаю, совсем не лучший. Вы можете перейти к C: затем перейти в Program Files и найти там папку nodejs. Если он найден, значит, вы используете 64-битную версию, иначе проверьте Program Files (x86). Если он там найден, значит у вас 32-битная версия.

мнеШакти
источник
1
Узел js мог быть установлен в системе когда-то в прошлом в произвольном месте. В таком случае это вообще не решение.
Megha Dev
2

Скорее всего, это не решит вашу проблему напрямую, поскольку я не знаю, как лучше всего добиться такого же поведения в Windows, но использование fileкоманды в системе Unix или Linux расскажет вам архитектуру процессора исполняемого файла:

$ file `which node`
/usr/local/bin/node: Mach-O 64-bit executable x86_64

Если у вас установлен Cygwin, я почти уверен, что он предоставляет fileкоманду, иначе вы можете проверить в Интернете аналогичные программы, которые работают в Windows.

Jez
источник
Используя fileкоманду из GnuWin32, я получаю PE32+ executable for MS Windows (console) Mono/.Net assemblyдля 64-битных программ, а PE32 executable for MS Windows (console) Intel 80386 32-bitдля 32-битных программ
даниэль куллманн
1

Просто запустите интерпретатор узлов, запустив node. затем в process.envнем выдается json со всей необходимой информацией. Моя попытка имеетPROCESSOR_ARCHITECTURE: 'AMD64' запись в этом.

Я также нахожу

ProgramFiles: 'C:\\Program Files', 'ProgramFiles(x86)': 'C:\\Program Files (x86)' ProgramW6432: 'C:\\Program Files'

Шива Тумма
источник
1
AFAIK это просто говорит вам, на что способен ваш процессор; если значение равно AMD64, он все равно может запускать 32-разрядные программы.
даниэль куллманн
0

Введите узел REPL, используя команду «узел».

Приглашение изменится на>

Затем используйте следующее, чтобы получить желаемую информацию:

  1. require ('process'). arch ==> это даст версию архитектуры узла.
  2. require ('process'). platform ==> это даст архитектуру платформы компиляции
  3. require ('process'). release и require ('process'). release.libUrl ==> также предоставляет информацию о версии и архитектуре
  4. require ('process'). config.variables.host_arch ==> это также даст версию архитектуры узла.
Дебаджьоти Дутта
источник