我正在转换库(ng-app-state)以使用angular cli,现在v6支持库(yay!).
在一些代码中进行脚手架和复制之后,这是我的第一个问题:
我如何/在哪里添加第三方依赖项?
到package.json,或到projects/ng-app-state/package.json?
作为MH.在这个问题中指出,如果他们包含Google Play服务,则不再需要在他们的Android项目中包含GoogleAdMobAdsSdk-xxxjar(请参阅迁移指南).但是,我想,而且我遇到了麻烦.
问题是:google-play-services_lib项目包含一个com.google.ads.AdRequest不推荐使用的定义,并且有一个私有构造函数.它最终出现在AdMob jar前面的类路径中(在"Android Private Libraries"条目中),所以当我尝试在我的代码中使用它时,它最终会尝试使用已弃用的,导致错误:The constructor AdRequest() is not visible.我认为没有办法重新订购"Android私人图书馆"中的条目.
你问我为什么要同时使用这两种?我有一个包含许多有用类的库项目,包括一些用于处理Play服务和AdMob的实用程序类.我使用该库项目的一些应用程序使用AdMob实用程序类,但不使用Play服务.
我正在转换库(ng-app-state)以使用angular cli,现在v6支持库(yay!).
尝试运行某些CLI命令时,它会失败,并显示如下错误:
$ ng test --source-map ng-app-state
Architect commands with multiple targets cannot specify overrides.'test' would be run on the following projects: ng-app-state-monorepo,ng-app-state
Error: Architect commands with multiple targets cannot specify overrides.'test' would be run on the following projects: ng-app-state-monorepo,ng-app-state
at TestCommand.validate (S:\Programming\git repositories\ng-app-state-monorepo\node_modules\@angular\cli\models\architect-command.js:91:23)
Run Code Online (Sandbox Code Playgroud) 我将 Google App Engine 与 Java 和 Google Cloud Endpoints 结合使用。在我的 JavaScript 前端,我使用此代码来处理初始化,建议:
var apisToLoad = 2;
var url = '//' + $window.location.host + '/_ah/api';
gapi.client.load('sd', 'v1', handleLoad, url);
gapi.client.load('oauth2', 'v2', handleLoad);
function handleLoad() {
// this only executes once,
if (--apisToLoad === 0) {
// so this is not executed
}
}
Run Code Online (Sandbox Code Playgroud)
gapi.client.load失败时如何检测和处理?目前,我在 JavaScript 控制台上打印了一条错误消息,内容为:Could not fetch URL: https://webapis-discovery.appspot.com/_ah/api/static/proxy.html). 也许那是我的错,或者它是 Google 的一个临时问题——现在这不是我关心的问题。我正在尝试利用这个机会在客户端很好地处理此类错误。
那么 - 我该如何处理呢? handleLoad没有为 errs 调用执行,gapi.client.load似乎没有单独的错误回调(参见文档),它实际上并没有抛出错误(仅将其打印到控制台),并且它不返回任何内容。我错过了什么?到目前为止,我唯一的想法是设置超时并假设初始化在 X …
我正在使用Google App Engine for Java,我正在尝试为处理blobstore的代码编写JUnit测试.如何在blobstore中放置blob以在测试期间使用(在配置为使用LocalBlobstoreServiceTestConfig将所有内容保存在内存中之后)?似乎解决方案应该非常简单和基本,但不知怎的,我找不到它.
我想可以使用Files API,但我已经避开了它,因为它已经停止(下周).
我知道在测试之外将blob放入blobstore的唯一方法是通过多部分表单上传.但是,我不知道如何在JUnit测试的上下文中这样做.
也可以通过blobstore API与Google Cloud Storage对象进行交互,但我选择使用vanilla blobstore,这样我就不需要将另一个服务(及其客户端库)循环到我的应用程序中.
所以我再次问,如何在那里获得一个blob,以便我可以测试使用它的代码?
我在Visual Studio Code中使用TSLint(通过TSLint扩展),它非常适合.ts文件.它也运行在.js文件上,这很好,但它不使用相同的规则,这对我来说很糟糕(对我而言).我怎样才能使用相同的规则?
我tslint.json看起来像这样:
{
"extends": "tslint:latest",
"rules": {
"indent": [true, "tabs"],
// a bunch of others
}
}
Run Code Online (Sandbox Code Playgroud)
例如,我在.js文件中收到此警告:
[tslint] space indentation expected (indent)
Run Code Online (Sandbox Code Playgroud)
(当我的规则设置好时,它希望我使用空格缩进"tabs".)
使用 rxjs,我有一个昂贵的计算来映射来自 a 的结果BehaviorSubject:
const obs$ = sameBehaviorSubject.pipe(map(expensiveComputation));
Run Code Online (Sandbox Code Playgroud)
然后在我的代码的多个其他部分中,我订阅了该 observable。每次我订阅时,它都会重新运行expensiveComputation。我怎样才能防止这种情况?
我有一个BehaviorSubject我希望能够做到的filter,但要保持新订阅者在订阅时始终获得一个值的行为主题式质量,即使最后发出的值被过滤掉。有没有一种简洁的方法可以使用 rxjs 的内置函数来做到这一点?例如:
const isEven = (n) => n % 2 === 0;
const source = new BehaviorSubject(1);
const stream = source.pipe(filter(isEven));
stream.subscribe((n) => console.log(n)); // <- I want this to print `1`
source.next(2); // prints `2`; that's good
source.next(3); // does not print anything; that's good
Run Code Online (Sandbox Code Playgroud)
我已经编写了自己的实现,但如果它很容易,我更喜欢使用现有运算符的更简单的解决方案。