小编Thi*_*ult的帖子

无法从Windows上的Node.js脚本生成`gcloud app deploy`

我正在构建一个Electron应用程序(Node.js),它需要gcloud app deploy从应用程序中生成实时反馈(stdin/stdout/stderr).

我迅速切换child_processexeca,因为我在Mac OS X上遇到了一些问题,其中child_process缓冲区限制为200kb(并gcloud app deploy发送一些大块的字符串> 200kb,这会导致命令崩溃).

现在,execa一切似乎都在OSX上正常工作,但在Windows上却没有.

代码看起来像这样:

let bin = `gcloud${/^win/.test(process.platform) ? '.cmd' : ''}`

//which: https://github.com/npm/node-which
which(bin, (err, fullpath) => {
  let proc = execa(fullpath, ['app', 'deploy'], {
    cwd: appPath
  })
  proc.stdout.on('data', data => {
    parseDeploy(data.toString())
  })
  proc.stderr.on('data', data => {
    parseDeploy(data.toString())
  })
  proc.then(() => {
    ...
  }).catch(e => {
    ...
  })
})
Run Code Online (Sandbox Code Playgroud)

此代码在Mac OS X上完美运行,而我在Windows上的结果却不一样

我尝试了很多东西:

  • execa()
  • execa.shell()
  • options shell:true
  • 我试过maxBuffer到1GB(以防万一)
  • 它适用于分离:true但我无法在应用程序中实时读取stdout/stderr,因为它提示新的cmd.exe而不与Node.js应用程序交互 …

windows child-process node.js gcloud google-app-engine-deploy

8
推荐指数
1
解决办法
193
查看次数

使用OAuth.io从Google获取刷新令牌

我正在尝试从OAuth.io获取任何基于Google的提供商的访问权限,但每当我进行身份验证时,我都会获得access_token但没有refresh_token.我已经为access_type选择了离线,但仍然没有快乐.

我已经尝试查看文档以获得解决方案,但它几乎不涉及与刷新令牌相关的任何内容.

oauth google-oauth oauth.io

5
推荐指数
1
解决办法
1757
查看次数

Angular5:动态组件加载 - 带有 @angular/core 依赖项的 StaticInjector 错误

我正在将一个电子应用程序从 AngularJS 迁移到 Angular5,并且我在需要加载任意模块及其组件并将主要组件动态渲染到视图的部分中遇到问题(它是一个插件系统)。在我的应用程序中,插件是一个 angular5 模块,其中包含在我的 angular5 应用程序中呈现的组件。

我像这样动态加载组件:

@ViewChild("view", { read: ViewContainerRef })
view: ViewContainerRef;

constructor(
  // ...
  private compiler: Compiler,
  private injector: Injector,
  private moduleRef: NgModuleRef<any>
) {}
Run Code Online (Sandbox Code Playgroud)

然后,

const addonModule = addonObject.getModule();
this.compiler
  .compileModuleAndAllComponentsAsync(addonModule)
  .then(factories => {
    const factory = factories.componentFactories.find(
      componentFactory =>
        addonObject.getViewComponent().name ==
        componentFactory.componentType.name
    );
    if (factory) {
      const cmpRef = factory.create(this.injector, [], null, this.moduleRef);
      cmpRef.instance.config = {
        from: "afd@test.com",
        apikey: "dsfkjd"
      };
      this.view.insert(cmpRef.hostView);
    }
  });
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是当我在模板中添加 Material Component 时,它失败并factory.create()出现以下错误:

模板:

<div>
    <button …
Run Code Online (Sandbox Code Playgroud)

angular-material2 angular

5
推荐指数
1
解决办法
2919
查看次数