我需要从处理程序文件访问 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)
谢谢!
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 对其进行哈希处理?用户将永远无法再次看到他/她的密钥,并且需要立即保存它,这是一个好的做法吗?
我找不到太多关于这应该如何工作的信息。
所以我今天开始处理我的项目,我对 nuxt.js 的这个错误感到很高兴。
\n\n我删除了node_modules和.nuxt文件夹,重新发出ayarn install
但我仍然有这个错误,_vm.$t is not a function
。
它从何而来?
\n\n我还得到了一些_vm.localePath is not a function
...
我确保它也在我的模块中:
\n\nmodules: [\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) 我正在使用一些不受欢迎的模块,例如Dyo
和js-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
在网络某个黑暗地方的评论中找到了它,但它似乎不起作用。
我可以通过模块关闭此功能吗?
我使用 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) 主要目标是将 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) 我创建了一个 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 ×2
javascript ×2
typescript ×2
api-design ×1
async-await ×1
docker ×1
export ×1
fastify ×1
grafana ×1
handler ×1
node.js ×1
nuxt.js ×1
prometheus ×1
promise ×1
security ×1
websocket ×1