小编Yve*_* M.的帖子

描述JsDoc中的对象数组

我有一个带有一系列对象的函数.
看起来像这样.

myAwesomeFunction([
    {
        name: 'someName',
        next: false,
        test: 'test'
    },
    {
        name: 'nameTwo',
        next: true
    }
]);
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的JSDOC看起来像这样

/**
 * My description
 * @param {Array.<Object>}
 */
Run Code Online (Sandbox Code Playgroud)

但是,如何描述对象属性,类型和描述以及它们是否是对象的可选项?

谢谢.

javascript jsdoc jsdoc3

5
推荐指数
2
解决办法
2502
查看次数

节点readline模块没有“打开”功能?

我正在尝试创建一个节点应用程序,该应用程序使用“ readline”模块逐行读取文本文件,并将其打印到控制台。

  var lineReader = require('readline');
  lineReader.createInterface({
    input: fs.createReadStream('./testfile')
  });
  lineReader.on('line', function(line){
    console.log(line);
  });
Run Code Online (Sandbox Code Playgroud)

根据模块的文档,应该有一个“ on”方法。但是,当我记录我创建的readline对象的实例时,在任何地方都看不到“ on”方法:

{ createInterface: [Function],   Interface:    { [Function: Interface]
     super_:
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: false,
        defaultMaxListeners: [Getter/Setter],
        init: [Function],
        listenerCount: [Function] } },   
emitKeypressEvents: [Function: emitKeypressEvents],   
cursorTo: [Function: cursorTo],   
moveCursor: [Function: moveCursor],   
clearLine: [Function: clearLine],   
clearScreenDown: [Function: clearScreenDown],   
codePointAt: [Function: deprecated],   
getStringWidth: [Function: deprecated],   
isFullWidthCodePoint: [Function: deprecated],   
stripVTControlCharacters: [Function: deprecated] }
Run Code Online (Sandbox Code Playgroud)

因此,自然地,当我调用时lineReader.on(),我得到一个错误,指出该函数不存在。

我正在严格按照文档进行操作……我缺少什么?on方法在哪里?

非常感谢您抽出宝贵的时间。

javascript methods module filereader node.js

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

CloudFront 中 S3 CORS 中的 AllowedHeader 选项

我的用例很简单,我在 S3 中有静态文件(JS、图像),我想通过 CloudFront CDN 共享到多个源。

我只想GET从 S3 公开允许,我的实际配置如下:

<CORSRule>
    <ID>BucketCORSRules</ID>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3600</MaxAgeSeconds>
</CORSRule>
Run Code Online (Sandbox Code Playgroud)

一切都运行良好,只是有时"no 'Access-Control-Allow-Origin' header is present"在放置新的 S3 对象时会随机出现错误。

我的问题是关于AllowedHeader.

我已经阅读过应该设置为or的所有地方(这里是 SO再次是 SO这里是 AWS),但为什么呢?AllowedHeader*Authorization

此 CORS 配置不应该与没有任何CORS 简单请求的情况AllowedHeader一起使用吗?什么可能导致随机"no 'Access-Control-Allow-Origin' header is present"错误?

AllowedHeader元素通过标头指定预检请求中允许使用哪些标头Access-Control-Request-Headers。标头中的每个标头名称Access-Control-Request-Headers必须与规则中的相应条目匹配。Amazon S3 将仅发送请求的响应中允许的标头。有关可在 Amazon S3 请求中使用的标头示例列表,请转到Amazon Simple Storage Service API 参考指南中的常见请求标头。

来源:http ://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html#cors-allowed-headers

amazon-s3 amazon-web-services cors amazon-cloudfront

5
推荐指数
0
解决办法
1170
查看次数

HTTP/2 和文件下载

我们提供文件托管解决方案。我们的客户是最终用户,他们通过 HTTP 1.1 协议访问我们的服务器并下载文件。这些客户端基本上是软件系统或 CDN,他们使用软件库下载我们的文件。没有人类用户访问我们的系统。我们还提供使用 HTTP/1.1 range-header 等的部分文件下载选项。客户端系统还使用多个线程通过跨块拆分来下载大文件。

我想检查一下,如果我们向我们的服务器开放 HTTP/2.0 协议是否会有真正的好处?既然我们的客户端系统已经能够使用多线程下载我们的文件,那么 HTTP/2.0 多路复用会增加任何真正的好处吗?

谢谢

file cdn download http-1.1 http2

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

TypeScript :具有原始类型约束的通用类型

我在 TypeScript 中有以下通用类

type UserId = number
type Primitive = string | number | boolean
class ColumnValue<T, S extends Primitive> {
    constructor(public columnName: String, public value: S) { }
}
abstract class Column<T> {
    constructor(public columnName: String) { }
    public set<S extends Primitive>(value: T): ColumnValue<T, S> {
        return new ColumnValue(this.columnName, this.getValue(value))
    }
    public abstract getValue<S extends Primitive>(value: T): S
}
let id = new class extends Column<UserId> {
    constructor() { super("id") }
    public getValue(value: UserId): number {
        return value
    } …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-generics

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

使用AWS API网关请求验证程序时启用CORS

我成功地使用CORS设置AWS API Gateway,当请求有效时,我有200状态代码和CORS头,这很好.

但是当AWS API网关请求验证程序检测到无效输入时,我的状态代码为400但不发送CORS标头...

这真的很不幸,因为客户端看到了CORS错误而不是真正的400错误(例如fetch客户端由于CORS错误而无法区分400错误).

此问题可能与从AWS API网关请求验证程序获取详细错误消息有关

request-validation cors aws-api-gateway

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

使用 JSON.parse reviver 强制结果对象中的值未定义,而不是导致属性被省略

JSON.parse将序列化的 JSON 作为参数并将其反序列化。第二个(可选)参数是一个 reviver 函数,它采用键和值并返回反序列化对象中的替换值。据记录,恢复程序如果返回未定义或什么也不返回,则所讨论的属性将从结果反序列化对象中省略。

我遇到一种情况,我希望将有问题的属性包含在结果反序列化对象中,其值为未定义。

因此,例如,以下内容目前是正确的:

JSON.parse(JSON.stringify({a: 1, b:2}), (k, v) => v===2 ? undefined : v);
// result of this is {a:1}, as is documented/expected.
Run Code Online (Sandbox Code Playgroud)

但如果我真的想要结果怎么办

{a:1, b:undefined}
Run Code Online (Sandbox Code Playgroud)

有没有办法编写reviver来做到这一点?

我特别不想在反序列化后再次迭代该对象,所以请不要建议将其作为解决方案。另外,我特别不希望将 b 设置为空。我真的希望它作为一个属性存在,其值未定义。

这可能根本不可能,但我希望有人有一个好主意!

第一次编辑:

第一个建议是很好的尝试,但我也需要它在深层结构中工作,所以如下:

JSON.parse(JSON.stringify({
    a: 1,
    b:{
        c: 1,
        d: 2,
        e: [
            1, 
            2,
            {
                f: 1,
                g: 2
            },
            4
        ]
    }
}), (k, v) => v===2 ? undefined : v);
Run Code Online (Sandbox Code Playgroud)

在我的理想世界中应该产生:

{
    a: 1,
    b:{
        c: 1,
        d: undefined,
        e: [
            1, …
Run Code Online (Sandbox Code Playgroud)

javascript json deserialization json-deserialization

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

glsl 有错误:无法从 'highp float' 转换为 'highp 3-component vector of float'

GLSL 给出这样的错误:

无法从“highp float”转换为“highp float 3分量向量”

T选择了错误部分:

vec3 bRgb = texture2D(u_img1, vUv).rgb;
vec3 aRgb = texture2D(u_aImg, vUv).rgb;
vec3 target1 = aRgb * bRgb;
vec3 alum = dot( aRgb, w );
vec3 blum = dot( bRgb, w );
vec3 clum = dot( target1, w );

vec3 target2 = (alum + blum) / (2. * clum); // This is the error line
gl_FragColor = vec4(target2, 1.);
Run Code Online (Sandbox Code Playgroud)

我可以找到错误行,但我不知道如何让它运行。

shader glsl fragment-shader

5
推荐指数
0
解决办法
2万
查看次数

GraphQL 是否以 Int 作为枚举

我试图在 GraphQL 模式中创建一个具有 Int 值的枚举类型,但失败了。我可能会错过文档中的某些内容。任何人都知道如何在枚举类型中实现 Int 值,如下所示?

enum IntValue {
  1
  2
  3
}
Run Code Online (Sandbox Code Playgroud)

graphql graphql-js graphql-java

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

使用 CloudFormation(和 Lambda 轮换模板)的 Aurora Serverless 密码轮换设置

AWS 为一些受支持的 RDS 引擎提供了完全配置且随时可用的轮换支持,包括 Amazon Aurora(还有无服务器?)

我正在尝试使用以下方法在我的 CloudFormation 模板中设置密码轮换AWS::SecretsManager::RotationSchedule(请注意,这不是一个功能齐全的模板,只是一个说明):

  DBCluster:
    Type: AWS::RDS::DBCluster
    Properties:
      Engine        : aurora
      EngineMode    : serverless
      EngineVersion : 5.6.10a

  Secret:
    Type: AWS::SecretsManager::Secret
    Properties:
      GenerateSecretString:
        SecretStringTemplate: '{"username": "admin"}'
        GenerateStringKey: password
        PasswordLength: 20
        ExcludeCharacters: '"@/\'

  SecretTargetAttachment:
    Type: AWS::SecretsManager::SecretTargetAttachment
    Properties:
      SecretId: !Ref Secret
      TargetId: !Ref DBCluster
      TargetType: AWS::RDS::DBCluster

  SecretRotation:
    Type: AWS::SecretsManager::RotationSchedule
    Properties:
      SecretId: !Ref UserAdminSecret
      RotationLambdaARN: <ARN_GET_FROM_SERVERLESS_APPLICATION_REPOSITORY>
      RotationRules:
        AutomaticallyAfterDays: 1
Run Code Online (Sandbox Code Playgroud)

但是 AWS Lambda 轮换函数失败并显示以下消息:

“必须将数据库引擎设置为 'mysql' 才能使用此轮换 lambda”:KeyError

AWS 提供的 AWS Lambda 轮换功能似乎不支持 Aurora Serverless。

是否有使用 …

amazon-web-services amazon-rds aws-cloudformation aws-secrets-manager aws-aurora-serverless

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