grpc-node: Electron v6 and gRPC error

Problem description

We are unable to use gRPC with electron v6.

Reproduction steps

Start with an empty directory. Setup electron and grpc:

yarn add electron@6.0.1
yarn add grpc

Re-buliding grpc for electron returns an error:

npm rebuild --runtime=electron --target=6.0.1

Environment

  • macOS 10.14.5
  • v10.16.0
  • nvm
  • Apple LLVM version 10.0.1 (clang-1001.0.46.4)
  • 1.22.2

Additional context

Traceback:

> electron@6.0.1 postinstall /Users/davidkell/dev/node_modules/electron
> node install.js


> grpc@1.22.2 install /Users/davidkell/dev/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp WARN Tried to download(404): https://node-precompiled-binaries.grpc.io/grpc/v1.22.2/electron-v6.0-darwin-x64-unknown.tar.gz
node-pre-gyp WARN Pre-built binaries not found for grpc@1.22.2 and electron@6.0.1 (electron-v6.0 ABI, unknown) (falling back to source compile with node-gyp)
gyp WARN install got an error, rolling back install
gyp ERR! configure error
gyp ERR! stack Error: 404 response downloading https://nodejs.org/dist/v6.0.1/node-v6.0.1-headers.tar.gz
gyp ERR! stack     at Request.<anonymous> (/Users/davidkell/.nvm/versions/node/v10.16.0/lib/node_modules/npm/node_modules/node-gyp/lib/install.js:214:14)
gyp ERR! stack     at Request.emit (events.js:203:15)
gyp ERR! stack     at Request.onRequestResponse (/Users/davidkell/.nvm/versions/node/v10.16.0/lib/node_modules/npm/node_modules/request/request.js:1066:10)
gyp ERR! stack     at ClientRequest.emit (events.js:198:13)
gyp ERR! stack     at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:556:21)
gyp ERR! stack     at HTTPParser.parserOnHeadersComplete (_http_common.js:109:17)
gyp ERR! stack     at TLSSocket.socketOnData (_http_client.js:442:20)
gyp ERR! stack     at TLSSocket.emit (events.js:198:13)
gyp ERR! stack     at addChunk (_stream_readable.js:288:12)
gyp ERR! stack     at readableAddChunk (_stream_readable.js:269:11)
gyp ERR! System Darwin 18.6.0
gyp ERR! command "/Users/davidkell/.nvm/versions/node/v10.16.0/bin/node" "/Users/davidkell/.nvm/versions/node/v10.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--library=static_library" "--module=/Users/davidkell/dev/node_modules/grpc/src/node/extension_binary/electron-v6.0-darwin-x64-unknown/grpc_node.node" "--module_name=grpc_node" "--module_path=/Users/davidkell/dev/node_modules/grpc/src/node/extension_binary/electron-v6.0-darwin-x64-unknown" "--napi_version=4" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=electron-v6.0"
gyp ERR! cwd /Users/davidkell/dev/node_modules/grpc
gyp ERR! node -v v10.16.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/Users/davidkell/.nvm/versions/node/v10.16.0/bin/node /Users/davidkell/.nvm/versions/node/v10.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --library=static_library --module=/Users/davidkell/dev/node_modules/grpc/src/node/extension_binary/electron-v6.0-darwin-x64-unknown/grpc_node.node --module_name=grpc_node --module_path=/Users/davidkell/dev/node_modules/grpc/src/node/extension_binary/electron-v6.0-darwin-x64-unknown --napi_version=4 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v6.0' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/Users/davidkell/dev/node_modules/grpc/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:198:13)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:982:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
node-pre-gyp ERR! System Darwin 18.6.0
node-pre-gyp ERR! command "/Users/davidkell/.nvm/versions/node/v10.16.0/bin/node" "/Users/davidkell/dev/node_modules/grpc/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--library=static_library"
node-pre-gyp ERR! cwd /Users/davidkell/dev/node_modules/grpc
node-pre-gyp ERR! node -v v10.16.0
node-pre-gyp ERR! node-pre-gyp -v v0.13.0
node-pre-gyp ERR! not ok
Failed to execute '/Users/davidkell/.nvm/versions/node/v10.16.0/bin/node /Users/davidkell/.nvm/versions/node/v10.16.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --library=static_library --module=/Users/davidkell/dev/node_modules/grpc/src/node/extension_binary/electron-v6.0-darwin-x64-unknown/grpc_node.node --module_name=grpc_node --module_path=/Users/davidkell/dev/node_modules/grpc/src/node/extension_binary/electron-v6.0-darwin-x64-unknown --napi_version=4 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v6.0' (1)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! grpc@1.22.2 install: `node-pre-gyp install --fallback-to-build --library=static_library`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the grpc@1.22.2 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!     /Users/davidkell/.npm/_logs/2019-08-08T23_18_33_650Z-debug.log

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 1
  • Comments: 17 (5 by maintainers)

Most upvoted comments

Version 1.23.0 is now out with Electron 6 support. Please try that version.

I’m sorry, Electron 6 support got broken in grpc 1.24.0. But it is fixed in grpc 1.24.1

@nkndy these are the relevant versions listed in my package-lock file

    "electron": {
      "version": "6.0.6",
      "resolved": "https://registry.npmjs.org/electron/-/electron-6.0.6.tgz",
      ...
    },
    ...
    "firebase": {
      "version": "6.5.0",
      ...
      "requires": {
        "@firebase/app": "0.4.15",
        "@firebase/app-types": "0.4.3",
        "@firebase/auth": "0.11.8",
        "@firebase/database": "0.5.1",
        "@firebase/firestore": "1.5.0",
        "@firebase/functions": "0.4.16",
        "@firebase/installations": "0.2.5",
        "@firebase/messaging": "0.4.9",
        "@firebase/performance": "0.2.17",
        "@firebase/polyfill": "0.3.20",
        "@firebase/storage": "0.3.10",
        "@firebase/util": "0.2.26"
      }
    },
"@firebase/firestore": {
      "version": "1.5.0",
      ...
      "dependencies": {
        "grpc": {
          "version": "1.23.3",
          "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.23.3.tgz",
          "integrity": "sha512-7vdzxPw9s5UYch4aUn4hyM5tMaouaxUUkwkgJlwbR4AXMxiYZJOv19N2ps2eKiuUbJovo5fnGF9hg/X91gWYjw==",
          "requires": {
            "@types/bytebuffer": "^5.0.40",
            "lodash.camelcase": "^4.3.0",
            "lodash.clone": "^4.5.0",
            "nan": "^2.13.2",
            "node-pre-gyp": "^0.13.0",
            "protobufjs": "^5.0.3"
          },
          ...
        }
      }
    },

I don’t remember 100% but I may have actually edited the package-lock file manually in order to make this work. My statement about the upgrade making it work was a false positive, I just forgot to come back here and edit my comment.

That’s why if you compare what I am currently using with my previous snippet, you will see that the old snippet lists firestore 1.5.0 with grpc 1.22.2 whereas the one here shows the same firestore with a newer grpc