Приложение nodejs, выдающее ошибку% 1, не является допустимым приложением Win32 на компьютере с Windows

Мое приложение Nodejs отлично работает в Ubuntu. Когда я попытался развернуть то же самое на компьютере с Windows, он показал ошибку ниже.

=>node server.js  
D:\home\site\wwwroot
D:\home\site\wwwroot\node_modules\ffi\node_modules\bindings\bindings.js:83
        throw e                  ^
Error: %1 is not a valid Win32 application.   
D:\home\site\wwwroot\node_modules\ffi\node_modules\ref\build\Release\binding.node
    at Error (native)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at bindings 

Я удалил модуль ffi и снова попытался установить ffi npm на машине с Windows, но это тоже не сработало.

 => npm install ffi
D:\home\site\wwwroot
npm WARN package.json @ No description
npm WARN package.json @ No repository field.
npm WARN package.json @ No README data
npm WARN package.json @ No license field.
gyp ERR! build error 
gyp ERR! stack Error: `msbuild` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (c:\Program Files (x86)\npm\2.11.2\node_modules\npm\node_modules\node-gyp\lib\build.js:269:23)
gyp ERR! stack     at ChildProcess.emit (events.js:110:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1074:12)
gyp ERR! System Windows_NT 6.2.9200
gyp ERR! command "node" "c:\\Program Files (x86)\\npm\\2.11.2\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\home\site\wwwroot\node_modules\ffi
gyp ERR! node -v v0.12.6
gyp ERR! node-gyp -v v2.0.1
gyp ERR! not ok 
npm ERR! Windows_NT 6.2.9200

Не могли бы вы высказать свое мнение по этому вопросу


person Praful    schedule 30.10.2015    source источник


Ответы (2)


Вы не можете перемещать скомпилированные надстройки между разными платформами таким образом (так же, как вы не можете скопировать исполняемый файл Linux в Windows и ожидать, что сможете его выполнить). Вам потребуется npm rebuild в каталоге вашего проекта, чтобы перекомпилировать любые дополнения после того, как вы скопируете дерево проекта на другую платформу.

person mscdex    schedule 30.10.2015

Модуль Node ffi является родным модулем. Эта ошибка вызвана ограничениями Azure WebApps. См. раздел Native Modules документа https://azure.microsoft.com/en-us/documentation/articles/nodejs-use-node-modules-azure.-apps/. Док сказал

«Веб-сайты Azure не поддерживают все нативные модули и могут не скомпилировать модули с очень специфическими предварительными требованиями».

Поэтому, если вам необходимо использовать собственный модуль для приложения NodeJS, я рекомендую использовать виртуальную машину Azure для поддержки компиляции собственного модуля.

person Peter Pan    schedule 02.11.2015