【问题标题】:Angular 6 client for C# Grpc server - getting error in nodeHttp.jsC# Grpc 服务器的 Angular 6 客户端 - 在 nodeHttp.js 中出现错误
【发布时间】:2018-12-30 00:18:09
【问题描述】:

Getting http/https module load error in nodeHttp.js

在这里,我正在尝试为 C# gRPC 服务器开发 Angular 6 客户端。我使用 protoc 编译器和 ts 相关插件 ts-protoc-gen 创建了 .ts 和 .js 文件。

当我尝试构建 Angular 应用程序时,出现上述错误。

【问题讨论】:

  • 代码在 D: 盘上寻找 Angular 源代码。您可能将它安装在不同的文件夹中。您需要修改配置以在正确的位置查找 Angular。通常像这样的问题您的代码在安装时没有重新编译。所以我经常建议制作一个副本项目 bin 文件夹,然后删除 bin 文件夹并编译。您应始终使用添加现有项目添加参考项目,然后浏览现有项目中的可执行文件。编译项目时,参考项目可执行文件将复制到 bin 文件夹.
  • 我已将所有节点模块安装在同一个应用程序文件夹中。我在 grpc-web-client 插件中遇到问题。
  • @jdweng 你应该把它作为一个答案,即使它不能解决泰米尔人的特殊问题,它可能会帮助其他人!
  • 你是怎么安装的? grpc 代码中没有正确安装某些东西,或者需要对其进行编译。
  • 我已经使用命令“npm install grpc --save”在应用程序文件夹中安装了 grpc,使用命令“npm install google-protobuf @types/google-protobuf”安装了 grpc-web-client grpc-web-client --save”,并使用命令“npm install ts-protoc-gen”安装了 Typescript 协议缓冲区编译器。所有命令都是通过使用 NodeJS 命令提示符执行的。我已将链接 github.com/improbable-eng/grpc-web/tree/master/ts 用于在客户端使用 .ts 文件。我在 Angular 6 应用程序中也遵循了同样的方法。

标签: c# angular6 grpc


【解决方案1】:

我不熟悉 improbable 的 grpc-web 代码生成器,但我熟悉使用官方的 grpc-web 工具。希望我在下面描述的过程可能仍然有用:

通常您会想要生成一个 .js 文件,其中包含所有原始消息定义以及 grpc-web 客户端。在我的项目中,我在一个脚本中执行此操作:https://github.com/grpc/grpc-experiments/blob/master/grpc-zpages/buildscripts/channelz_codgen.sh,它在 grpc-web docker 内部调用此脚本:https://github.com/grpc/grpc-experiments/blob/master/grpc-zpages/docker/codegen/shared_dir/scripts/gen_channelz_pb.sh

结果是一个独立的 .js 文件。

然后,您可以通过<app-root></app-root> 之前的<script src="..."/> 标记在HTML 文件中导入js 文件,或者像我在这里所做的那样在编译期间进行角度导入脚本:https://github.com/grpc/grpc-experiments/pull/306

您可以在此处找到有关如何使用 angular 脚本的更多信息:https://github.com/angular/angular-cli/wiki/stories-global-scripts

【讨论】:

    【解决方案2】:

    grpc-web nodeHttps 传输依赖于节点内部包:http、https、url。这些已从 Angular 6 中删除,这导致尝试使用 grpc-web-client 构建 Angular6 应用程序失败。

    https://github.com/improbable-eng/grpc-web/issues/191

    因为您不会使用 nodeHttps 传输(它适用于使用 grpc-web 的 Node 应用程序,并且 Node 有 grpc 的本机实现,因此不需要 grpc-web)您可以在 tsconfig 中覆盖这些模块.json 指向一个空文件:

    {
    "compilerOptions": {
        "paths": {
          "https": [ "src/app/patch.js" ],
          "http": [ "src/app/patch.js" ],
          "url": [ "src/app/patch.js" ],
      }
    }
    

    其中 src/app/patch.js 是一个空文件(或引用相关问题的文件):

    //https://github.com/improbable-eng/grpc-web/issues/191
    

    【讨论】:

      猜你喜欢
      • 2019-01-22
      • 2017-10-11
      • 1970-01-01
      • 2017-04-21
      • 2015-06-19
      • 2021-01-05
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多