I am trying to install the NPM package thirft in my angular project. I added to mi package.json:
"@types/thrift": "^0.10.9",
"thrift": "^0.13.0",
"node-int64": "^0.4.0",
Then I run npm Install
All seems to go smooth.
As stated in the npm package webpage I have to grunt the package to finish its instalaltion. Following the steps I got to the package and execute: npm install npx grunt
And then I get this error
Running "shell:ThriftGen" (shell) task
>> /bin/sh: 1: ../../compiler/cpp/thrift: not found
Warning: Done, with errors: command "mkdir -p test/gen-js && ../../compiler/cpp/thrift -gen js --out test/gen-js ../../test/ThriftTest.thrift && ../../compiler/cpp/thrift -gen js --out test/gen-js ../../test/JsDeepConstructorTest.thrift && mkdir -p test/gen-js-jquery && ../../compiler/cpp/thrift -gen js:jquery --out test/gen-js-jquery ../../test/ThriftTest.thrift && mkdir -p test/gen-nodejs && ../../compiler/cpp/thrift -gen js:node --out test/gen-nodejs ../../test/ThriftTest.thrift && mkdir -p test/gen-js-es6 && ../../compiler/cpp/thrift -gen js:es6 --out test/gen-js-es6 ../../test/ThriftTest.thrift && mkdir -p test/gen-nodejs-es6 && ../../compiler/cpp/thrift -gen js:node,es6 --out ./test/gen-nodejs-es6 ../../test/ThriftTest.thrift" (target "ThriftGen") exited with code 127. Use --force to continue.
Aborted due to warnings.
It fell that using force will not correct the underlying problem but ignore it and end in a erroneous installation.
Edit from Feb. 23, 2021:
Since a few days, Apache thrift 0.14.0 has been released. This should solve the aforementioned issues. Please give it a try and open a new question if you experience any problems. See https://www.npmjs.com/package/thrift
Original Answer:
As of now (thrift 0.13.0) there are multiple issues with the Node.js package. The issues are documented here:
All of these issues have been fixed in upstream master branch at https://github.com/apache/thrift. But the fixes have not been released to npm yet.
If you urgently need a working thrift, I recommend building it yourself from the sources. This will require a bit of fiddling, but its not impossible. Generally for this kind of request its best if you ask at the users mailing list at https://thrift.apache.org/mailing. But I'll try to outline the relevant steps here.
You will need to create a local Node.js package that you can use in place of the usual npm install
command. See the Node.js package documentation for more details. This Node.js package does not include the thrift
compiler, so it is not sufficient to generate new Thrift bindings from an IDL file. If you need the compiler too, it may be easiest to install it from binary distributors (like your Linux distribution, if you have that). Apache Thrift itself does not provide ready-made binaries.
Here are the required steps to generate the Node.js bundle:
npm install
to install build dependenciesnpm pack
This will (as of now) create a local bundle thrift-0.14.0.tgz
with the latest Node.js sources for Thrift.npm --save "file:thrift-0.14.0.tar.gz"