我正在开发一些我在数组中发出三个promise的东西.目前它看起来像这样
var a = await Promise.all([Promise1(), Promise2(), Promise3()]);
Run Code Online (Sandbox Code Playgroud)
现在所有这些承诺将返回真或假.但是目前我正在等待他们所有人完成,一旦他们中的一个返回真实,我就可以继续.
我想到了实现这一目标的方法但看起来都很难看.你会如何解决这个任务?
我目前正在做Advent Of Code(顺便说一句,绝对推荐但偏离主题。但是在第 3 天,我对我的算法的性能非常不满意。
所以我开始使用内置的节点分析器来测试我浪费时间的地方。如果您想重现我的步骤advent-of-code-2019-typescript ,这里是 repo 的链接。另外如果你跑
npm install
npm run build
Run Code Online (Sandbox Code Playgroud)
在运行分析器之前
我按照node.js的指南来分析我的代码。所以首先我用分析器运行了我的第 3 天代码
node --prof ./dist/src/03.01/index.js
node --prof-process isolate-xxxxxx-v8.log > processed.txt
Run Code Online (Sandbox Code Playgroud)
现在输出并没有真正帮助
已处理.txt [摘要部分]
[Summary]:
ticks total nonlib name
12 0.0% 70.6% JavaScript
0 0.0% 0.0% C++
344 0.6% 2023.5% GC
56103 100.0% Shared libraries
5 0.0% Unaccounted
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,所有刻度都显示在共享库下。我猜这是因为 index.js 导入了它需要的所有函数并执行它们。实际上,一切都应该在 JavaScript 下出现,但只有 12 个滴答声。
如果我是正确的,这就是我的问题的原因
我如何解决共享库部分以实际显示被调用的所有函数及其刻度?
如果我的上述问题得到解答,我会很高兴,但这会进一步帮助我。我使用 TypeScript,因此 Profiler 在转译的代码上运行。结果,我的函数显示为,我必须检查转译后的代码,其中 line 指的是哪个函数。可能但不漂亮。
有没有办法将它映射到打字稿文件?
我目前在使用heroku时遇到了一些问题.我刚安装它并尝试过heroku create.它需要我的凭据,但到目前为止我只是得到这个
! HTTP Error: https://api.heroku.com/login 410 Gone
! Invalid response from API.
! HTTP 410
! {myMail myPw}
!
! Are you behind a proxy?
! https://devcenter.heroku.com/articles/using-the-cli#using-an-http-proxy
Run Code Online (Sandbox Code Playgroud)
我一直在寻找其他人,但他们都是代理人.我不是.我还检查了我的防火墙设置,并尝试使用管理员权限运行命令行客户端.但到目前为止,没有任何证据证明是成功的.我一想到就会继续尝试并发布答案.也许有人有个主意.不胜感激.在此先感谢
问候克里斯
编辑
也许一些信息.我在跑
Windows 10 Pro(V10.0.15063)
以及使用路由器和DHCP的基本网络设置
我正在努力通过基于node.js的REST-API替换IE中的ActiveX-Implementation,运行edge.js
到目前为止,页面实现的基本示例工作得很好.我将index.js设置为
var edge = require('edge');
var edgeVb = require('edge-vb');
var path = require('path');
var helloVb = edge.func('vb', path.join(__dirname, 'simpleVbFunction.vb'));
helloVb('Testing with String', (err, res) => {
if(err) throw err;
console.log(res);
});
Run Code Online (Sandbox Code Playgroud)
和simpleVbFunction.vb一样
Async Function(Input As Object) As Task(Of Object)
Return Await Task.Run(Function()
Return "NodeJS Welcomes: " & Input.ToString()
End Function)
End Function
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在我希望能够访问运行node.js的机器上运行的应用程序.在这种情况下Catia(虽然也可以是Excel)
通常为此我会使用像这样的simpleVbFunction.vb
Async Function(Input As Object) As Task(Of Object)
Return Await Task.Run(Function()
Dim CATIA as Object
set CATIA = GetObject(, "CATIA.Application")
Return CATIA.ActiveDocument.Application.FullName
End Function)
End Function …Run Code Online (Sandbox Code Playgroud) 我目前在尝试在Openshift中设置nginx:alpine时遇到问题。
我的构建运行得很好,但是由于以下错误而被拒绝,我无法部署
2019/01/25 06:30:54 [emerg] 1#1:mkdir()“ / var / cache / nginx / client_temp”失败(13:权限被拒绝)
nginx:[emerg] mkdir()“ / var / cache / nginx / client_temp”失败(13:权限被拒绝)
现在我知道Openshift在权限方面有些棘手,因为该容器在没有root特权的情况下运行,并且UID在运行时更新,这意味着它在/ etc / passwd中不可用。但是用户是组根的一部分。现在在这里描述应该如何处理
我什至走得更远,为了测试目的使整个/ var完全可访问(777),但仍然出现错误。这就是我的Dockerfile的样子
Docker文件
FROM nginx:alpine
#Configure proxy settings
ENV HTTP_PROXY=http://my.proxy:port
ENV HTTPS_PROXY=http://my.proxy:port
ENV HTTP_PROXY_AUTH=basic:*:username:password
WORKDIR /app
COPY . .
# Install node.js
RUN apk update && \
apk add nodejs npm python make curl g++
# Build Application
RUN npm install
RUN ./node_modules/@angular/cli/bin/ng build
COPY ./dist/my-app /usr/share/nginx/html
# Configure NGINX
COPY …Run Code Online (Sandbox Code Playgroud) 我目前遇到问题。我开始为我的 Angular 应用程序编写测试并想要调试它们。现在我已经用谷歌搜索了很多,我尝试了来自微软的食谱(https://github.com/Microsoft/vscode-recipes/tree/master/Angular-CLI),而我最接近使它工作的是这个BlogPost
http://blog.mlewandowski.com/Debugging-Karma-tests-with-VSCode.html
现在至少我可以将调试器附加到 VS-Code。然而,VS Code 仍然不会在断点处停止,而是测试继续运行。VS Code 中的断点也将保持未经验证的状态(见图)
这就是我到目前为止所拥有的(我只提供我更改过的部分,以免发布太多代码)。
知道我做错了什么吗?除此之外,调试工作正常。我可以调试我的 Node.js 应用程序,并且调试 ng 服务也可以正常工作。
启动.json
{
"type": "chrome",
"request": "attach",
"name": "MyApp - Tests",
"address": "localhost",
"port": 9222,
"pathMapping": {
"/": "${workspaceRoot}",
"/base/": "${workspaceRoot}"
}
}
Run Code Online (Sandbox Code Playgroud)
karma.conf.js
browsers: [
'ChromeDebugging'
],
customLaunchers: {
ChromeDebugging: {
base: 'Chrome',
flags: ['--remote-debugging-port=9222']
}
}
Run Code Online (Sandbox Code Playgroud) 我目前正在使用模板构建和部署应用程序
oc new-app -f ./openshift/template.yaml
Run Code Online (Sandbox Code Playgroud)
我使用的是模板,而不是单独的部署、构建等配置,因为我也希望能够传递参数,例如
oc new-app -f ./openshift/template.yaml --p DATABASE_PW=PW
Run Code Online (Sandbox Code Playgroud)
据我所知,这是不可能使用
oc create -f ./openshift/deploymentconfig.yaml --p SOME_PARAM=TEST
Run Code Online (Sandbox Code Playgroud)
现在我也将其集成到了 Jenkins 的构建管道中。我现在的问题是这样的。这在第一次部署时一切正常,但对于重新部署则不起作用。我可以用 Jenkins 重建应用程序,就像
oc start-build my-app
Run Code Online (Sandbox Code Playgroud)
但这会导致我的模板的更改不会被考虑。我也无法使用 new-app,因为它不会替换现有的配置,从而产生与此类似的错误
--> Creating resources ...
error: services "my-app" already exists
....
--> Failed
Run Code Online (Sandbox Code Playgroud)
有办法解决这个问题吗?也许像命令一样new-app replace所有配置都被替换?我目前正在解决这个问题,方法是使用 shell 文件完全终止该应用程序,然后再次启动它;但这总是会导致几分钟的停机时间,这确实让我很烦恼。
command-line-interface jenkins build-pipeline openshift openshift-client-tools
我正在使用 yq (类似于 jq 但用于 yaml 文件)。我的目标是做到以下几点。我有一个类似于
-------BEGIN CERTIFICATE-------
asdoqijepoqjwe1i49i120941p2j4omslasdajsdqweqwe
qwelqjwkasdlajsölkjasldkjakljsdlkjasdasdpiqwe
-------END CERTIFICATE--------
Run Code Online (Sandbox Code Playgroud)
我有一个 yaml 文件(在本例中为 Openshift 模板),如下所示
apiVersion: v1
kind: Template
objects:
- apiVersion: v1
kind: Route
tls:
certificate:
key:
someOther: stuff
Run Code Online (Sandbox Code Playgroud)
现在我的目标是将证书注入到 yaml 中,以便输出看起来像这样
apiVersion: v1
...
certificate: |
-------BEGIN CERTIFICATE-------
asdoqijepoqjwe1i49i120941p2j4omslasdajsdqweqwe
qwelqjwkasdlajsölkjasldkjakljsdlkjasdasdpiqwe
-------END CERTIFICATE--------
Run Code Online (Sandbox Code Playgroud)
然而,互联网搜索和文档都没有任何帮助。我得到的最接近的是使用
yq w /tmp/template.yaml objects[0].tls.certificate "\n$(cat cert.pem)"
给我留下以下输出
certificate: !!binary |
fC0KLS0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0tLQphc2RvcWlqZXBvcWp3ZTFpND
lpMTIwOTQxcDJqNG9tc2zDYXNkYWpzZMNxd2Vxd2UKcXdlbHFqd2vDYXNkbGFqc8O2bGtq
YXNsZGtqYWtsanNkbGtqYXNkYXNkcGlxd2UKLS0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS
0tLS0t
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这是我想添加的以 !!binary | 开头的 base64 编码值。任何想法发生了什么以及如何实现我想要的输出?
我正在学习在我的项目中实现angularfire2.不幸的是我现在卡住了.我设置了像这里描述的Angular-Project
https://github.com/angular/angularfire2/blob/master/docs/install-and-setup.md
我还在firebase中使用规则集设置了一个数据库
{
"rules": {
".read": "true",
".write": "true"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在浏览器中的控制台中运行应用程序时,会出现以下错误
错误错误:未为项目启用Cloud Firestore API
现在我找到了一种在这里启用API的方法
https://console.cloud.google.com/apis/library/firestore.googleapis.com/?project=projectname
现在离开我的错误
错误错误:权限丢失或不足
我现在的问题是我可以设置API密钥(但也从我的firebase控制台获得了不同的API密钥?)和OAuths,但我不知道如何实现这些是我的代码.只是简单地生成一个API密钥并在environment.firebase配置中使用该密钥不起作用.如果有人知道任何事情会很棒.我会继续尝试,让你知道我是否也能让它运作起来.
node.js angularjs firebase angularfire2 google-cloud-firestore
我目前正在为 Mongoose 开发一个插件。作为此的一部分,选项接口需要扩展,因为它可以容纳附加属性。为了实现这一目标,我正在执行以下操作。
我使用声明合并,所以我创建一个像这样的 TypingsFile
一些打字.d.ts
declare Interface QueryFindOneAndUpdateOptions {
MyCustomField: string
}
Run Code Online (Sandbox Code Playgroud)
我还将此打字文件包含在我的 tsconfig.json 中
tsconfig.json
declare Interface QueryFindOneAndUpdateOptions {
MyCustomField: string
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是这不起作用。仅当我在同一文件中声明两个具有相同名称的接口时,声明合并才有效。导入和定义接口会引发命名冲突。
知道如何解决这个问题吗?