当前位置: 首页 > 知识库问答 >
问题:

(Node.js)--grpc_out:protoc gen grpc:%1不是有效的Win32应用程序

林英朗
2023-03-14

我想编译我的。将proto文件转换为存根,但在输入命令时:

`protoc-I=/原型/虚拟。proto--js\u out=import\u style=commonjs,二进制:/服务器--grpc\U out=/服务器--plugin=protoc gen grpc=哪个grpc\u tools\u node\u protoc\u plugin

我遇到以下错误:

--grpc_out: protoc-gen-grpc: %1 is not a valid Win32 application.

我安装的东西:

  • Windows 10
  • npm安装-g grpc工具
  • npm安装google protobuf
  • protoc公司

注意:我注意到已经有一些类似的问题,但我没有为Node找到一个。js,同样,已经提出的问题都有不同的解决方案

共有3个答案

段干河
2023-03-14

由于grpc工具已在全球范围内安装(-g每个操作的标志),因此可以预先设置插件路径。

    GRPC_TOOLS_PLUGIN="$HOME/AppData/Roaming/npm/grpc_tools_node_protoc_plugin.cmd" && \
protoc -I=. ./protos/*.proto \
--js_out=import_style=commonjs,binary:./server \
--grpc_out=./server \
--plugin=protoc-gen-grpc=$GRPC_TOOLS_PLUGIN

感谢前面的两个答案给我指点
测试发现正在Windows 10 Pro和Git Bash上工作。

卢鸿彩
2023-03-14

简单的解决方案:

对我来说,“which”命令指向了错误的路径,所以我删除了它,取而代之的是插件的绝对路径。看起来是这样的:

协议-我=./协议/dummy.proto-js_out=import_style=公共js,二进制:./服务器-grpc_out=./服务器-插件=协议-gen-grpc=C:\用户\myUser\AppData\漫游\npm\node_modules\grpc-tools\bin\grpc_node_plugin.exe

说明:

我不知道为什么会发生这个错误(--grpc_out: proc-gen-grpc:%1不是一个有效的Win32应用程序),但我有一个理论...“哪个”命令指向文件夹而不是. exe文件。我怎么知道这一点?当我尝试只运行命令(在终端中)时

which grpc_tools_node_protoc_plugin

它返回文件夹

/c/Users/myUser/AppData/Roaming/npm/grpc\u tools\u node\u protoc\u插件

龙令雪
2023-03-14

在Windows上,我对Node的grpc工具进行了一些修改,遇到了一些问题。我通过npm install grpc tools grpc\u tools\u node\u protoc\TS--将dev保存到我的本地节点模块来安装工具(和TS插件)。bin文件夹。感谢这篇文章,我可以提供这些解决方案。这是我最初的shell脚本

#!/usr/bin/env bash

PROTO_DIR="./src/grpc/proto"
PROTOC_GEN_TS_PATH="./node_modules/.bin/protoc-gen-ts"
GRPC_TOOLS_NODE_PROTOC_PLUGIN="./node_modules/.bin/grpc_tools_node_protoc_plugin"
GRPC_TOOLS_NODE_PROTOC="./node_modules/.bin/grpc_tools_node_protoc"

# Generate JS and corresponding TS d.ts codes for each .proto file using the grpc-tools for Node.
$GRPC_TOOLS_NODE_PROTOC \
    --plugin=protoc-gen-grpc="$GRPC_TOOLS_NODE_PROTOC_PLUGIN" \
    --plugin=protoc-gen-ts="$PROTOC_GEN_TS_PATH" \
    --js_out=import_style=commonjs,binary:"$PROTO_DIR" \
    --ts_out="$PROTO_DIR" \
    --grpc_out="$PROTO_DIR" \
    -I "$PROTO_DIR" \
    "$PROTO_DIR"/*.proto
  1. 如果只提供插件的名称,例如plugin=protoc gen grpc=/node\u模块/。bin/grpc\u tools\u node\u protoc\u插件,Windows将投诉Win32应用程序无效。您可以通过添加来解决此问题。cmd扩展名:

插件=protoc gen grpc=/node\u模块/。bin/grpc\u tools\u node\u protoc\u插件。cmd

插件=protoc gen grpc=C://

现在真正的魔法发生了:

由于一个简单的输入错误(我键入的是plugin=proto-gen-grpc,而不是plugin=proto-gen-grpc),我发现,如果您在本地节点环境中安装了grpc工具和其他插件,您可以简单地省略plugin。似乎grpc\U tools\u node\u protoc将自动查找生成由输出标志grpc\u out、js\u out或ts\u out in指定代码所需的可执行文件/node\u模块/。箱子//code>。

因此,我在脚本中更新了以下LOC

$GRPC_TOOLS_NODE_PROTOC \
    --js_out=import_style=commonjs,binary:"$PROTO_DIR" \
    --ts_out="$PROTO_DIR" \
    --grpc_out="$PROTO_DIR" \
    -I "$PROTO_DIR" \
    "$PROTO_DIR"/*.proto

也许,其他人可以分享他们的经验和对这个问题的更多澄清。

 类似资料:
  • 问题内容: 我试图从带有子进程的python解释器中调用python文件“ hello.py”。但我无法解决此错误。[Python 3.4.1]。 除了使用子过程之外,还有没有其他方法可以“使用参数调用python脚本”?提前致谢。 问题答案: 错误非常明显。该文件不是可执行文件。您需要指定可执行文件: 您需要在搜索路径上可见,或者可以将完整路径传递给运行调用脚本的可执行文件:

  • 我安装了 pip安装wordcloud 然后我导入了 我得到了这个错误:

  • 问题内容: 在maven中运行exec-npm-update时,出现以下错误CreateProcess error = 193,%1不是有效的Win32应用程序-> [帮助1] 以下是pom文件中的代码段。 问题答案: 发生此问题的原因是我使用的角度版本为1.5。 将可执行文件从npm更改为npm.cmd可以解决问题!

  • 本文向大家介绍java.lang.UnsatisfiedLinkError: %1 不是有效的Win32应用程序错误解决,包括了java.lang.UnsatisfiedLinkError: %1 不是有效的Win32应用程序错误解决的使用技巧和注意事项,需要的朋友参考一下 发现问题 最近工作中利用JNA 调用 dll 库时保错,错误如下: 我环境是 64 位 win7. java.lang.Un

  • 在Windows 10主页(在x64位)上,我尝试在命令提示符上运行以下命令: 节点索引。js 错误如下: C:\Users\cooldudeasateen\OneDrive\Coding\sil\node\u modules\bindings\bindings。js:121;e^ 错误:\?\C:\Users\cooldudeasateen\OneDrive\Coding\sil\node\u

  • 问题内容: 我有一个新的Rails应用程序,该应用程序是在Windows 7下通过进入目录并键入“ rails newapp”创建的。创建过程很好,当我访问根页面时,一切都很好。但是,当我尝试访问将访问数据库的页面时,得到以下信息: 在developer.log中。Mysql在我的机器上运行良好,并且我在其他目录中的其他应用程序中也正在运行,仅此一项是行不通的。有什么想法吗? 问题答案: 这是对我