【问题标题】:thrift npm instalation failsthrift npm 安装失败
【发布时间】:2020-08-11 23:33:40
【问题描述】:

我正在尝试在我的 Angular 项目中安装 NPM 包 thirft。我添加到 mi package.json:

"@types/thrift": "^0.10.9",
"thrift": "^0.13.0",
"node-int64": "^0.4.0",

然后我运行npm Install 一切似乎都很顺利。

如 npm 包网页中所述,我必须对包发出咕噜声才能完成安装。 按照我得到包并执行的步骤: npm 安装 npx咕噜声

然后我得到这个错误

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. 

看来,使用武力并不能纠正根本问题,而是忽略它并以错误的安装告终。

【问题讨论】:

    标签: node.js npm gruntjs thrift


    【解决方案1】:

    从 2021 年 2 月 23 日开始编辑:

    几天以来,Apache thrift 0.14.0 已经发布。这应该可以解决上述问题。如果您遇到任何问题,请尝试并打开一个新问题。见https://www.npmjs.com/package/thrift

    原答案:

    截至目前(thrift 0.13.0),Node.js 包存在多个问题。这些问题记录在这里:

    所有这些问题都已在 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 包所需的步骤:

    1. https://github.com/apache/thrift 克隆 Thrift master 分支
    2. 打开终端并转到结帐的根文件夹
    3. 调用npm install 安装构建依赖项
    4. 使用 npm pack 打包 Thrift 的本地 Node.js 包 这将(截至目前)使用 Thrift 的最新 Node.js 源创建一个本地包 thrift-0.14.0.tgz
    5. 将此复制到您的 Angular 项目,然后使用 npm --save "file:thrift-0.14.0.tar.gz" 安装它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-04
      • 2012-12-07
      • 1970-01-01
      • 2018-06-06
      • 2020-10-31
      相关资源
      最近更新 更多