小编Ale*_*ler的帖子

将Node.js项目从纯ES6迁移到TypeScript

是否已开始将Node.js项目从普通ES6迁移到TypeScript.

我做了什么:

npm install -g typescript
npm install @types/node --save-dev
Run Code Online (Sandbox Code Playgroud)

设置tsconfig.json:

{
     "compilerOptions": {
         "emitDecoratorMetadata": true,
         "experimentalDecorators": true,
         "moduleResolution": "node",
         "module": "commonjs",
         "target": "es6",
         "sourceMap": true,
         "outDir": "dist",
         "allowJs": true,
         "forceConsistentCasingInFileNames": true
     },
     "exclude": [
         "node_modules",
         "dist",
         "docs"
     ]
}
Run Code Online (Sandbox Code Playgroud)

将所有文件扩展名更改.js.ts(除了node_modules):

find . -not \( -path node_modules -prune \) -iname "*.js" -exec bash -c 'mv "$1" "${1%.js}".ts' - '{}' \;
Run Code Online (Sandbox Code Playgroud)

tsc现在运行会导致大量错误,例如:

server.ts:13:7 - error TS2451: Cannot redeclare block-scoped variable 'async'.

13 …
Run Code Online (Sandbox Code Playgroud)

node.js typescript typescript3.0

7
推荐指数
2
解决办法
843
查看次数

如何从jQuery Ajax而不是200获得304?

我的服务返回一个304但jQuery Ajax似乎将其转换为200 OK结果.

这是我的要求:

$.ajax({    
    url: '/api/items',    
    type: 'GET',    
    dataType: 'json',    
    contentType: 'application/json',    
    ifModified:true,    
    cache: false,    
    statusCode: {    
        304: function() {    
            alert("not modified"); // does not fire
        }    
    },    

    complete: function (xhr, status) {    
        console.log(xhr.status); // 200 
        }    
    }    
});
Run Code Online (Sandbox Code Playgroud)

使用Fiddler,我可以看到服务304正确返回.

为什么jQuery将其转换为200

jquery

6
推荐指数
1
解决办法
5128
查看次数

从GitLab调用Webhook会返回SSL错误

在GitLab 11.0.2中创建Webhook并对其进行测试时,我得到了这个错误:

Hook execution failed: SSL_connect returned=1 errno=0 state=SSLv2/v3 read server hello A: tlsv1 alert internal error
Run Code Online (Sandbox Code Playgroud)

Webhook URI使用HTTPS和公共证书(不是自签名).

SSL verification 已禁用此Webhook.

更新

我升级openssl1.0.2gopenssl1.0.2o但错误仍然存​​在.

然后我试着跑:

openssl s_client -connect mywebhookhost:443
Run Code Online (Sandbox Code Playgroud)

结果导致:

depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Organization Validation CA - SHA256 - G2
verify error:num=20:unable to get local issuer certificate
Run Code Online (Sandbox Code Playgroud)

更新2

/opt/gitlab/embedded/bin/ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'

回报

OpenSSL 1.0.2o 27 Mar 2018

更新3

已安装GlobalSign CA证书

 awk -v …
Run Code Online (Sandbox Code Playgroud)

gitlab

6
推荐指数
1
解决办法
572
查看次数

Docker 镜像和操作系统安全更新

假设我使用 Node.js 10.8.0 node:10.8.0-jessie Docker 镜像作为我的应用程序的基础镜像Dockerfile。该应用程序在生产中运行稳定,并且有一段时间(几个月)没有更新。

Node.js10.8.0镜像是基于buildpack-deps:jessie image 的,而image本身也是基于buildpack-deps:jessie-scm image 的。这是基于buildpack-deps:jessie-curl 图像,其基本图像debian:jessie

系统/安全更新Debian Jessie会定期发布。在经典的托管环境中,我会使用更新我的主机sudo apt-get update && sudo apt-get upgrade,我很好。

但是如何确保我在容器中运行的 Node.js 应用程序获得最新的Debian Jessie更新和补丁,同时保持在 Node.js 上node:10.8.0-jessie

在我的 CI 中运行sudo apt-get update && sudo apt-get upgrade我的应用程序Dockerfile并定期为我的应用程序创建一个新映像并重新部署容器并不是正确的方法。

由于这一切都从debian:jessie图像开始,我希望它会定期更新,并且所有相关图像也会更新。

然后我将通过10.8.0再次拉取 Node.js镜像来重建我的应用程序镜像( --no-cache) 并重新部署它。

我的问题是:这个假设正确吗?是否有任何关于该工作流程的官方 Docker 文档对我来说似乎必不可少?我如何获得有关debian:jessie并最终node:10.8.0-jessie …

docker

6
推荐指数
1
解决办法
2653
查看次数

JSDoc:将类型分配给内联变量

我可以将类型分配给object从第三方库获取结果的变量吗?

const result = thirdPartyLib.doSomething();
Run Code Online (Sandbox Code Playgroud)

现在我可能有一个 ES6 类

class MyClass {
  ...
}
Run Code Online (Sandbox Code Playgroud)

我想将 my 注释result为 type MyClass

这可以使用 JSDoc 吗?

javascript jsdoc webstorm

6
推荐指数
1
解决办法
1503
查看次数

无法将目标组添加到 NLB

我创建了一个 AWS NLB,并在 TLS/端口 443 的 NLB 设置期间创建了一个新的目标组。

现在我想为 TCP 端口 80 添加另一个目标组,并且我创建了一个新的目标组。

当尝试在“侦听器”下注册目标组时,TCP 端口 80 的目标组显示为灰色: 在此输入图像描述

我缺少什么?

amazon-ec2 amazon-vpc

6
推荐指数
2
解决办法
9421
查看次数

从Git存储库中分叉文件,而无需克隆存储库

有没有办法在不克隆整个存储库的情况下从外部Git存储库派生文件?

git

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

macOS上的base64命令返回错误结果

致电时base64 <<< username:password得到以下结果:dXNlcm5hbWU6cGFzc3dvcmQK

在PostMan中使用该结果并针对Basic Auth端点发出请求时,我得到了401。

username:passwordhttps://www.base64encode.org进行编码时,我得到了以下结果:dXNlcm5hbWU6cGFzc3dvcmQ=并且可以从上面针对Basic Auth端点成功使用它。

如果我使用PostMan生成传入username和的Basic Auth标头password,则它会生成与https://www.base64encode.org相同的base64编码的字符串。我也可以复制username:passwordtestin.txt和使用openssl创造的base64字符串:

openssl base64 -in testin.txt -out testout.txt返回dXNlcm5hbWU6cGFzc3dvcmQKbase64创建相同的错误结果。

openssl version 退货 OpenSSL 0.9.8zh 14 Jan 2016

base64 openssl macos-sierra

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

对 npm 包使用 dist 文件夹而不是 root

我创建了一个 Node.js 包,这个包的用户要引用的文件驻留在dist包内的一个文件夹中。

现在我不想使用require('my-package/dist/feature')但是require('my-package/feature').

我设置mainfiles此在package.json,但与测试包时npm link在本地,我还是要用require('my-package/dist/feature'),否则我得到的Cannot find module错误。

package.json

  "main": "dist",
  "files": ["dist"],
Run Code Online (Sandbox Code Playgroud)

node.js npm-link

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

软件包“dotnet-sdk-7.0”在 Xubuntu / Ubuntu 22.04 上没有安装候选

从 Ubuntu feed 安装 .NET 6 SDK 后,我按照此处的说明安装 .NET 7 SDK。

wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
Run Code Online (Sandbox Code Playgroud)

sudo apt-get update && sudo apt-get install dotnet-sdk-7.0结果出现此错误:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package dotnet-sdk-7.0 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'dotnet-sdk-7.0' has no installation …
Run Code Online (Sandbox Code Playgroud)

ubuntu .net-core

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