NW.JS не удалось загрузить двоичный модуль grpc

Я пытаюсь создать приложение, для которого требуется модуль gRPC. Мое приложение отлично работает при запуске из командной строки - node server.js

Но запуск nwjs приводит к сбою и выдает следующую ошибку:

Что, я пробовал -

1. Если я включу window.location.href = 'http://localhost:3000'; затем окна nwjs показывают localhost Этот сайт недоступен localhost отказался подключаться. и консоль очищается после отображения ошибки, поэтому я прокомментировал эту строку, чтобы увидеть ошибку. (журнал ошибок показан ниже)

Uncaught Error: Failed to load gRPC binary module because it was not installed for the current system
Expected directory: node-webkit-v0.30.5-win32-x64-unknown
Found: [node-v57-win32-x64-unknown]
This problem can often be fixed by running "npm rebuild" on the current system
Original error: Cannot find module 'C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc\src\node\extension_binary\node-webkit-v0.30.5-win32-x64-unknown\grpc_node.node'
    at Object.<anonymous> (C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc\src\grpc_extension.js:53:17)
    at Module._compile (internal/modules/cjs/loader.js:702:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:719:10)
    at Module.load (internal/modules/cjs/loader.js:613:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:552:12)
    at Function.Module._load (internal/modules/cjs/loader.js:544:3)
    at Module.require (internal/modules/cjs/loader.js:650:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc\src\client_interceptors.js:145:12)
    at Module._compile (internal/modules/cjs/loader.js:702:30)

2. Я создал ожидаемый каталог вручную - "Ожидаемый каталог: node-webkit-v0.30.5-win32-x64-unknown" внутри модуля grpc, но теперь я вижу другую ошибку в инструменте разработчика, думал, что он решил вышеуказанную проблему.

Uncaught Error: A dynamic link library (DLL) initialization routine failed.
\\?\C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc\src\node\extension_binary\node-webkit-v0.30.5-win32-x64-unknown\grpc_node.node
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:749:18)
    at Module.load (internal/modules/cjs/loader.js:613:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:552:12)
    at Function.Module._load (internal/modules/cjs/loader.js:544:3)
    at Module.require (internal/modules/cjs/loader.js:650:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc\src\grpc_extension.js:32:13)
    at Module._compile (internal/modules/cjs/loader.js:702:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:719:10)
    at Module.load (internal/modules/cjs/loader.js:613:32)

3. Я следовал инструкциям здесь, но тоже не повезло. Выдает еще один набор ошибок.

Попробовав инструкции в третьем пункте, я получаю эту ошибку

> [email protected] install C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc
> node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute 'nw-gyp.cmd configure --fallback-to-build --library=static_library --module=C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc\src\node\extension_binary\node-webkit-v1.11.3-win32-x64-unknown\grpc_node.node --module_name=grpc_node --module_path=C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc\src\node\extension_binary\node-webkit-v1.11.3-win32-x64-unknown --napi_version=1 --node_abi_napi=napi' (Error: spawn nw-gyp.cmd ENOENT)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc\node_modules\node-pre-gyp\lib\util\compile.js:77:29)
node-pre-gyp ERR! stack     at emitOne (events.js:116:13)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:211:7)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:196:12)
node-pre-gyp ERR! stack     at onErrorNT (internal/child_process.js:372:16)
node-pre-gyp ERR! stack     at _combinedTickCallback (internal/process/next_tick.js:138:11)
node-pre-gyp ERR! stack     at process._tickCallback (internal/process/next_tick.js:180:9)
node-pre-gyp ERR! System Windows_NT 10.0.17134
node-pre-gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\BLACK\\Desktop\\NWJS Xperiments\\NuOS-OAuth\\node_modules\\grpc\\node_modules\\node-pre-gyp\\bin\\node-pre-gyp" "install" "--fallback-to-build" "--library=static_library"
node-pre-gyp ERR! cwd C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc
node-pre-gyp ERR! node -v v8.10.0
node-pre-gyp ERR! node-pre-gyp -v v0.10.0
node-pre-gyp ERR! not ok
Failed to execute 'nw-gyp.cmd configure --fallback-to-build --library=static_library --module=C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc\src\node\extension_binary\node-webkit-v1.11.3-win32-x64-unknown\grpc_node.node --module_name=grpc_node --module_path=C:\Users\BLACK\Desktop\NWJS Xperiments\NuOS-OAuth\node_modules\grpc\src\node\extension_binary\node-webkit-v1.11.3-win32-x64-unknown --napi_version=1 --node_abi_napi=napi' (Error: spawn nw-gyp.cmd ENOENT)
npm WARN [email protected] No description
npm WARN [email protected] No repository field.

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `node-pre-gyp install --fallback-to-build --library=static_library`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\BLACK\AppData\Roaming\npm-cache\_logs\2018-05-23T01_42_49_740Z-debug.log

Сервер.JS

const express = require('express'),
    bodyParser = require('body-parser'),
    socket = require('socket.io'),
    BigTable = require('@google-cloud/bigtable'),
    PubSub = require('@google-cloud/pubsub'),
    passport = require('passport'),
    mongoose = require('mongoose'),
    cookieSession = require('cookie-session'),
    dotenv = require('dotenv').config(),
    config = require('./config/config'),
    gutils = require('./app/gutils'),
    authRoutes = require('./routes/auth-route'),
    passportSetup = require('./app/passport-setup'),
    app = express(),
    server = app.listen(3000),
    io = socket(server);

/*


App code removed 


*/


app.get('/', (req, res) => {
    res.render('login');
});

app.use(express.static('public'));

console.log('Server running on the port 3000 ...'); 

P.S. Он отлично работает, если я запускаю команду node server.js в cmd, а затем запускаю nwjs.

Я разрабатываю на Windows 10 x64


person B L Λ C K    schedule 22.05.2018    source источник
comment
Какую ошибку вы получаете после выполнения связанных инструкций по перестройке gRPC для Node Webkit?   -  person murgatroid99    schedule 23.05.2018
comment
@ murgatroid99 Я отредактировал вопрос и добавил журнал. Пожалуйста, проверьте   -  person B L Λ C K    schedule 23.05.2018
comment
@ murgatroid99 есть предложения? человек!   -  person B L Λ C K    schedule 02.06.2018
comment
Извините, но я не знаком с Node Webkit и не могу точно сказать, что происходит из-за этой ошибки сборки.   -  person murgatroid99    schedule 02.06.2018
comment
Просто столкнулся с чем-то подобным после установки менеджера версий узлов. Многие переменные разные, поэтому не уверен, насколько это поможет, но я решил проблему, убедившись, что версия узла, которую я запускал локально, была той же версией узла, которую я запускал в своих сборках CI. Может быть, это место, чтобы начать искать?   -  person reddiky    schedule 19.07.2018
comment
Вы уверены, что у вас установлена ​​самая последняя версия npm?   -  person Silve2611    schedule 13.08.2018
comment
@ Silve2611 Да, есть. Как я уже упоминал, он отлично работает, но не с nwjs. У меня есть вышеуказанные ошибки при запуске с nwjs, в противном случае приложение работает нормально. Я использовал nwjs, чтобы сделать приложение доступным для распространения. Можете ли вы предложить что-нибудь... Я так отчаянно.   -  person B L Λ C K    schedule 13.08.2018
comment
Что вы имеете в виду, говоря, что это работает нормально, но не nwjs? Пока вы не установили его в nwjs, он не может работать. Можете ли вы добавить журнал ошибок из C:\Users\BLACK\AppData\Roaming\npm-cache_logs\2018-05-23T01_42_49_740Z-debug.log?   -  person Silve2611    schedule 14.08.2018


Ответы (1)


Мой подход был бы немного другим. Прежде всего, вы не можете иметь ваше приложение node.js и nwjs в одной и той же структуре папок, потому что они устанавливают модули узлов по-разному.

Что ты должен делать.

  1. Создайте базовое приложение NWJS, как описано в http://docs.nwjs.io/en/latest/For%20Users/Getting%20Started/

Вы можете выбрать самую последнюю версию, но помните, какая у вас версия, потому что вам нужно знать это для установки grpc.

  1. Теперь вам нужно установить grpc, который вы хотите использовать.

    npm install grpc --build-from-source --runtime=node-webkit --target=0.32.2 --target_arch=x64
    

Уточните, какая у вас версия NWJS, как описано в пункте 1. Самая последняя — 0.32.2. И установите для target_arch значение x64.

  1. Теперь шаг за шагом скопируйте код в ваше приложение nwjs и запустите его. NWJS — это не то же самое, что приложение node.js. Поэтому важно разделить код node.js и код NWJS.
person Silve2611    schedule 13.08.2018