pulsar-client-node
pulsar-client-node copied to clipboard
npm install fails on win10
I want inatall on win10 x64,but failed
PS D:\code\server> npm install pulsar-client -S
> [email protected] install D:\code\server\node_modules\pulsar-client
> node-pre-gyp install --fallback-to-build
node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp WARN Tried to download(404): https://pulsar.apache.org/docs/en/client-libraries-cpp/libpulsar-v1.2.0-node-v72-win32-x64.tar.gz
node-pre-gyp WARN Pre-built binaries not found for [email protected] and [email protected] (node-v72 ABI, unknown) (falling back to source compile with node-gyp)
gyp: codezhidaoservernode_modulesnode-addon-apisrcnode_api.gyp not found (cwd: D:\code\server\node_modules\pulsar-client) while loading dependencies of binding.gyp while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:351:16)
gyp ERR! stack at ChildProcess.emit (events.js:210:5)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
gyp ERR! System Windows_NT 10.0.18363
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "configure" "--fallback-to-build" "--module=D:\\code\\zhidao\\server\\node_modules\\pulsar-client\\build\\Release\\libpulsar.node" "--module_name=libpulsar" "--module_path=D:\\code\\zhidao\\server\\node_modules\\pulsar-client\\build\\Release" "--napi_version=5" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v72" "--python=C:\\Users\\Administrator\\.windows-build-tools\\python27\\python.exe"
gyp ERR! cwd D:\code\server\node_modules\pulsar-client
gyp ERR! node -v v12.14.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute 'C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js configure --fallback-to-build --module=D:\code\server\node_modules\pulsar-client\build\Release\libpulsar.node --module_name=libpulsar --module_path=D:\code\server\node_modules\pulsar-client\build\Release --napi_version=5 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v72 --python=C:\Users\Administrator\.windows-build-tools\python27\python.exe' (1)
node-pre-gyp ERR! stack at ChildProcess.<anonymous> (D:\code\zhidao\server\node_modules\node-pre-gyp\lib\util\compile.js:83:29)
node-pre-gyp ERR! stack at ChildProcess.emit (events.js:210:5)
node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:1021:16)
node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5)
node-pre-gyp ERR! System Windows_NT 10.0.18363
node-pre-gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "D:\\code\\server\\node_modules\\node-pre-gyp\\bin\\node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd D:\code\server\node_modules\pulsar-client
node-pre-gyp ERR! node -v v12.14.0
node-pre-gyp ERR! node-pre-gyp -v v0.12.0
node-pre-gyp ERR! not ok
Failed to execute 'C:\Program Files\nodejs\node.exe C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js configure --fallback-to-build --module=D:\code\server\node_modules\pulsar-client\build\Release\libpulsar.node --module_name=libpulsar --module_path=D:\code\server\node_modules\pulsar-client\build\Release --napi_version=5 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v72 --python=C:\Users\Administrator\.windows-build-tools\python27\python.exe' (1)
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\nodemon\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `node-pre-gyp install --fallback-to-build`
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\Administrator\AppData\Roaming\npm-cache\_logs\2020-09-14T09_39_54_031Z-debug.log
Do you have a plan to solve the problem?
The Node.js client library does not support Windows. At least we haven't verified that it can be installed and built on Windows.
This npm package depends on Pulsar C++ client library, so the important thing is whether the C++ client works on Windows. According to Pulsar's official documentation, the C++ client only supports Linux and MacOS. https://pulsar.apache.org/docs/en/client-libraries-cpp/
However, the README describes how to build the C++ client on Windows. I have never tried this. https://github.com/apache/pulsar/blob/master/pulsar-client-cpp/README.md
@massakam It is even failing on Linux too - https://github.com/streamnative/pulsar-client-node/issues/81
This was the biggest reason why we decided not to use Apache Pulsar and favored Apache Kafka, as our whole team uses Windows laptops as dev machines.
Can we get an update on this from a maintainer? Will the node client ever work on windows? This might be a show stopper for us 😢
@osbornm I believe we are able to build the nodejs client after this PR: https://github.com/apache/pulsar-client-node/pull/169
Have you tried to build the client from the latest master? Or are you looking for a released binary for Windows?
@sijie What I want to do is be able to go into our node API project and npm install pulsar-client. So yes I would want released binaries for Windows.
I'd like to have a clean experience, clone > npm install > npm start, for our developers (both win and macOS).
@osbornm Could you build the NodeJS client follow this README file https://github.com/apache/pulsar-client-node? I think the key point is to build the CPP client on windows first.
@gaoran10 I can and have got the node client to build local after pulling down the c++ library building and setting the ENV.
This is tangential to the problem I have though. I want to be able to go into my own node project, say an API I am building, install the node client via npm (npm install pulsar-client), make some changes to the API to produce messages, commit to my project, and then be able to have another developer pull down that project on a windows machine and simply run npm install to restore packages and not have to jump through a bunch of hoops (cloning repositories and building c++ projects).
IMHO, the solution is to have this project publish the c++ binaries. You can see from the following output that npm/node-gyp is trying to fetch the prebuilt.
node-pre-gyp WARN Using request for node-pre-gyp https download
node-pre-gyp WARN Tried to download(404): https://pulsar.apache.org/docs/en/client-libraries-cpp/libpulsar-v1.3.1-node-v83-win32-x64.tar.gz
node-pre-gyp WARN Pre-built binaries not found for [email protected] and [email protected] (node-v83 ABI, unknown) (falling back to source compile with node-gyp)
IMHO, the solution is to have this project publish the c++ binaries. You can see from the following output that npm/node-gyp is trying to fetch the prebuilt.
Unfortunately, there are no plans to publish pre-built C++ binaries at this time. Building and publishing binaries for different operating systems, NODE_MODULE_VERSIONs, and instruction set architectures can be costly.
After version 1.8.0, you can easily use this command to install to windows systems: npm install [email protected], and you no longer need to install the CPP client first.