thrift npm 安装失败
thrift npm instalation fails
我正在尝试在我的 angular 项目中安装 NPM 包 thirft。我添加到 mi package.json:
"@types/thrift": "^0.10.9",
"thrift": "^0.13.0",
"node-int64": "^0.4.0",
然后我运行npm Install
一切似乎都很顺利
如 npm 包网页中所述,我必须 g运行t 包才能完成安装。
按照我到达包并执行的步骤:
npm 安装
npx g运行t
然后我得到这个错误
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.
事实证明,使用强制不会解决根本问题,而是会忽略它并导致错误安装。
2021 年 2 月 23 日编辑:
这几天,Apache thrift 0.14.0 发布了。这应该可以解决上述问题。如果您遇到任何问题,请试一试并提出一个新问题。参见 https://www.npmjs.com/package/thrift
原答案:
截至目前(thrift 0.13.0)Node.js 包存在多个问题。这些问题记录在此处:
- https://issues.apache.org/jira/browse/THRIFT-5170
- https://issues.apache.org/jira/browse/THRIFT-5029
- https://issues.apache.org/jira/browse/THRIFT-5039
所有这些问题都已在 https://github.com/apache/thrift 的上游 master 分支中得到修复。但是修复还没有发布到 npm。
如果您迫切需要一个工作储蓄机构,我建议您自己从源头构建它。这将需要一些摆弄,但这并非不可能。一般来说,对于这种请求,最好在 https://thrift.apache.org/mailing 的用户邮件列表中询问。但我会尝试在此处概述相关步骤。
您需要创建一个本地 Node.js 程序包,您可以使用它来代替通常的 npm install
命令。有关详细信息,请参阅 Node.js package documentation。这个 Node.js 包 不 包含 thrift
编译器,因此从 IDL 文件生成新的 Thrift 绑定是不够的。如果您也需要编译器,从二进制发行版(例如您的 Linux 发行版,如果有的话)安装它可能是最简单的。 Apache Thrift 本身不提供现成的二进制文件。
以下是生成 Node.js 包所需的步骤:
- 从 https://github.com/apache/thrift
克隆 Thrift master 分支
- 打开终端并转到结帐的根文件夹
- 调用
npm install
安装构建依赖项
- 用
npm pack
打包一个本地 Node.js 的 Thrift 包
这将(截至目前)创建一个本地包 thrift-0.14.0.tgz
,其中包含 Thrift 的最新 Node.js 源。
- 将其复制到您的 Angular 项目,然后使用
npm --save "file:thrift-0.14.0.tar.gz"
安装它
我正在尝试在我的 angular 项目中安装 NPM 包 thirft。我添加到 mi package.json:
"@types/thrift": "^0.10.9",
"thrift": "^0.13.0",
"node-int64": "^0.4.0",
然后我运行npm Install
一切似乎都很顺利
如 npm 包网页中所述,我必须 g运行t 包才能完成安装。 按照我到达包并执行的步骤: npm 安装 npx g运行t
然后我得到这个错误
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.
事实证明,使用强制不会解决根本问题,而是会忽略它并导致错误安装。
2021 年 2 月 23 日编辑:
这几天,Apache thrift 0.14.0 发布了。这应该可以解决上述问题。如果您遇到任何问题,请试一试并提出一个新问题。参见 https://www.npmjs.com/package/thrift
原答案:
截至目前(thrift 0.13.0)Node.js 包存在多个问题。这些问题记录在此处:
- https://issues.apache.org/jira/browse/THRIFT-5170
- https://issues.apache.org/jira/browse/THRIFT-5029
- https://issues.apache.org/jira/browse/THRIFT-5039
所有这些问题都已在 https://github.com/apache/thrift 的上游 master 分支中得到修复。但是修复还没有发布到 npm。
如果您迫切需要一个工作储蓄机构,我建议您自己从源头构建它。这将需要一些摆弄,但这并非不可能。一般来说,对于这种请求,最好在 https://thrift.apache.org/mailing 的用户邮件列表中询问。但我会尝试在此处概述相关步骤。
您需要创建一个本地 Node.js 程序包,您可以使用它来代替通常的 npm install
命令。有关详细信息,请参阅 Node.js package documentation。这个 Node.js 包 不 包含 thrift
编译器,因此从 IDL 文件生成新的 Thrift 绑定是不够的。如果您也需要编译器,从二进制发行版(例如您的 Linux 发行版,如果有的话)安装它可能是最简单的。 Apache Thrift 本身不提供现成的二进制文件。
以下是生成 Node.js 包所需的步骤:
- 从 https://github.com/apache/thrift 克隆 Thrift master 分支
- 打开终端并转到结帐的根文件夹
- 调用
npm install
安装构建依赖项 - 用
npm pack
打包一个本地 Node.js 的 Thrift 包 这将(截至目前)创建一个本地包thrift-0.14.0.tgz
,其中包含 Thrift 的最新 Node.js 源。 - 将其复制到您的 Angular 项目,然后使用
npm --save "file:thrift-0.14.0.tar.gz"
安装它