小编Hyp*_*olf的帖子

如何从处理程序/控制器文件访问 fastify 实例?

我需要从处理程序文件访问 fastify 实例。我根本不记得我应该怎么做。

指数:

fastify.register(require('./routes/auth'), {
  prefix: '/auth'
})
Run Code Online (Sandbox Code Playgroud)

路线/授权:

module.exports = function(fastify, opts, next) {
  const authHandler = require('../handlers/auth')
  fastify.get('/', authHandler.getRoot)
  next()
}
Run Code Online (Sandbox Code Playgroud)

处理程序/授权:

module.exports = {
  getRoot: (request, reply) {
    // ACCESS FASTIFY NAMESPACE HERE
    reply.code(204).send({
      type: 'warning',
      message: 'No content'
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

handler fastify

8
推荐指数
2
解决办法
6256
查看次数

服务如何生成和使用公共和秘密 API 密钥?

Google、Stripe 和许多其他公司都有公共 API 密钥和秘密 API 密钥。

生成随机字符串很容易,但我的问题是,如何生成公钥和私钥、存储它们并正确使用它们?

公共 API 密钥用于告知用户是谁,秘密用于确认用户的身份。

我的流程如下: - 用户创建帐户 - 用户激活服务(内部) - 服务返回公共和秘密 API 密钥(UARRHAtPtJcLxx5RmMWo9oTrca4gRt2k、C9YS7Mhzichq2vqBuRkNJxkNci5W2Xua) - 用户在他/她的网站和网站上使用公共密钥服务器端的私钥

我使用的是nodejs,当用户请求API密钥时,公钥是按需生成的:

let public = await crypto.randomBytes(32).toString('base64');
Run Code Online (Sandbox Code Playgroud)

将秘密存储在数据库中就像以明文存储密码一样。我想我们不想要这个,它需要以某种方式进行散列。例如,我是否生成一个“私钥”并使用 argon2 对其进行哈希处理?用户将永远无法再次看到他/她的密钥,并且需要立即保存它,这是一个好的做法吗?

我找不到太多关于这应该如何工作的信息。

security api-design node.js

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

为什么 nuxt-i18n 模块似乎没有加载?( _vm.$t 不是函数)

所以我今天开始处理我的项目,我对 nuxt.js 的这个错误感到很高兴。

\n\n

我删除了node_modules和.nuxt文件夹,重新发出ayarn install但我仍然有这个错误,_vm.$t is not a function

\n\n

它从何而来?

\n\n

我还得到了一些_vm.localePath is not a function...

\n\n

我确保它也在我的模块中:

\n\n
modules: [\n    [\'nuxt-i18n\', {\n      locales: [\n        { code: \'en\', iso: \'en-US\', name:\'English\', file: \'en-US.json\' },\n        { code: \'fr\', iso: \'fr-FR\', name:\'Fran\xc3\xa7ais\', file: \'fr.js\' },\n        // { code: \'es\', iso: \'es-ES\', name:\'English\', file: \'es.js\' }\n      ],\n      defaultLocale: \'en\',\n      // strategy: \'prefix_and_default\',\n      lazy: true,\n      langDir: \'i18n/\',\n      // By default, custom routes are extracted from page …
Run Code Online (Sandbox Code Playgroud)

javascript internationalization nuxt.js

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

如何允许缺少 .d.ts 类型定义的模块?

我正在使用一些不受欢迎的模块,例如Dyojs-sha3,它似乎没有任何类型。

我现在并不真正关心第三方库中的类型,我不想花几个小时来输入这些类型。我主要将它用于服务器,以限制我的错误并在开发过程中更轻松地进行故障排除。

Cannot find module X之前遇到过错误,所以我"moduleResolution": "node"在 tsconfig.json 文件中添加了:。

如何使打字稿不抱怨节点模块缺少类型?

整个错误:

Could not find a declaration file for module 'dyo'. '/node_modules/dyo/dist/dyo.umd.js' implicitly has an 'any' type.
  Try `npm install @types/dyo` if it exists or add a new declaration (.d.ts) file containing `declare module 'dyo';` [7016]
Run Code Online (Sandbox Code Playgroud)

// @ts-nocheck在网络某个黑暗地方的评论中找到了它,但它似乎不起作用。

我可以通过模块关闭此功能吗?

import typescript

4
推荐指数
1
解决办法
1万
查看次数

Websocket 使用队列等待服务器响应

我使用 websocket 发送和接收数据(每秒最多 30 条小消息)。我希望客户端发送 websocket 有效负载并等待来自服务器的特定消息。

流动:

客户端发送请求

它还将 requestId (163)作为带有时间戳waitingResponse的新对象存储在对象中sent

waitingResponse = {
  163: { sent: 1583253453549 }
}
Run Code Online (Sandbox Code Playgroud)

当服务器响应时,另一个函数会验证有效负载,然后将结果附加到该请求对象

waitingResponse = {
  163: { sent: 1583253453549, action: "none" }
}
Run Code Online (Sandbox Code Playgroud)

客户端每隔 x 毫秒检查该对象的action密钥

我有一个函数发送有效负载,然后等待来自(下面的函数)sendPayload的值。awaitResponse目前这个功能还不能用。我尝试制作两个单独的函数,一个是 setTimeout 计时器,另一个是 Promise。我还尝试将两者放在同一个函数中,并确定它是循环还是带有参数的承诺,original您可以在下面看到。现在我认为即使在循环中,函数也应该始终返回一个承诺,但我似乎无法使用计时器来实现这一点,而且我担心彼此之间存在多个承诺的成本。假设我每 5 毫秒检查一次响应,超时时间为 2000 毫秒。这是很多承诺。

public async sendPayload(details) {
    console.log("sendPlayload", details);

    this.waitingResponse[details.requestId] = { sent: +new Date() };

    if (this.socket.readyState === WebSocket.OPEN) {
        this.socket.send(JSON.stringify(details));
    }
    const bindAwaitResponse = this.awaitResponse.bind(this);
    return …
Run Code Online (Sandbox Code Playgroud)

javascript websocket promise async-await

2
推荐指数
1
解决办法
5612
查看次数

如何让普罗米修斯在 Docker 中与 grafana 一起工作?

主要目标是将 prometheus 链接为 grafana 中的后端,但http://localhost:9090作为 grafana 中的 url 返回输入HTTP Error Bad Gateway

我启动了一个 prometheus docker 镜像,但它没有监听 IPv4 上的 9090 端口。

netstat -ntulp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      15895/nginx: master 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3190/sshd           
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      24970/postmaster    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      3148/master         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      15895/nginx: master 
tcp6       0      0 …
Run Code Online (Sandbox Code Playgroud)

docker grafana prometheus

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

如何在不实例化类的情况下调用该类的方法?

我创建了一个 Tools 类来扩展它的每个类,因为它包含所有类使用的一组函数。

我像这样导出我的课程:

工具.ts

export abstract class Tools {
  getRandom(bytes) {
    return 21 // Example
  }
}
Run Code Online (Sandbox Code Playgroud)

主.ts

import * as Tools from './Tools.ts'

class Main extends Tools { // <-- I get the error from the Tools keyword here
  constructor() {
    super() // If not, I get an error
  }

  token() { // Example method
    this.getRandom(2)
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Type 'typeof import("[...]/tools")' is not a constructor function type
Run Code Online (Sandbox Code Playgroud)

我不想new Tools()在每个类中都使用,我想直接调用类的函数。

如何实现导入类并调用它的方法而不在其他类中实例化该类?

import export typescript

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