问题标签 [nodejs-server]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 如何在导入的路由文件中使用在 server.js 文件中创建的日志中间件
我的盘子里有一个非常令人困惑的问题,我有一个 server.js,这是我的第一个应用程序入口点:
如您所见,我有一个记录器(pino)并且我使用它并且它工作正常。现在我需要向这个入口点服务器文件添加一个路由文件,问题就在这里。如何在 test.js 路由文件中传递或使用我在 server.js 中创建的记录器(寻找最佳实践)?
node.js - 外部文件 404 Not Found 中的 NodeJS Express 路由
我是 NodeJs 和 express 的新手。我的目标是拥有一个单独的路由文件,其中包含我所有的应用程序路由。所以我创建了一个名为routes.js
. 内容如下所示:
在我的主文件中,我需要带有这一行的文件。该app
变量包含我的 express 实例。
如果我http://localhost/auth/register
在浏览器中调用,我总是会遇到404 Not Found
错误。当我直接在主文件中定义路由时,app.get('/auth/register', require('./controllers/auth/register'));
它运行良好。我的控制台中没有错误。
有谁知道为什么我的单独路由文件不起作用?谢谢您的帮助!
node.js - 使用 Node Js 的 AWS Lambda 在 http.request() 上提供“连接 ETIMEDOUT”
我编写了 lambda 函数,每当在 s3 存储桶上创建任何新对象时都会检索 s3 Url。检索 s3Url 后,此 lambda 通过 REST 调用向我的服务器发出请求。
我观察了云观察者。它无法向我的服务器发送请求我不想在我的 lambda 中使用外部包,我想让它轻量级,这就是我使用 nodeJ 的 https 的原因。
这是我的 Lambda 代码
这是我的云观察者错误
{ “errorType”:“错误”,“errorMessage”:“连接 ETIMEDOUT 34.255.225.41:443”,“代码”:“ETIMEDOUT”,“errno”:“ETIMEDOUT”,“系统调用”:“连接”,“地址” :“34.255.225.41”,“端口”:443,“堆栈”:[“错误:连接 ETIMEDOUT 34.255.225.41:443”,“在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)”] }
node.js - Nodejs:覆盖 global.eval
有什么方法可以安全地覆盖 eval 吗?试过直接覆盖:
这以某种方式给出了以下参考错误:
ReferenceError:未定义 createCallback
注意:这里的错误不是在覆盖时产生的,而是在某些调用 eval 时产生的。在其他情况下,这完全符合预期。
请在此处找到问题重现代码:https ://runkit.com/embed/8hv0yp94on8s
node.js - 在集群模式下使用带有 PM 2 的 NodeJS Express 服务器
因此,我将尽我所能解释这一点:
我编写了一个 TCP 服务器,它接受来自可穿戴设备(gps 手环类型)的数据,使用net
in NodeJS
. TCP 服务器有connections = {}
属性,它包含所有的连接,像这样:
- 服务器接受连接
- 设备发送握手包,其中包含
device id
- 套接字存储如下:
connections[device_id] = socket
同样的 TCP 服务器也有express
服务器,它允许我使用 JSON post 将数据直接发送到设备:curl -XPOST https://localhost:8080/send/device_id -d '{"command": "test"}'
服务器解析 url 并写入套接字connections[params.device_id].write()
这一切都很好,当使用pm2 start server.js
. 我能够跟踪设备、接受和发送数据等。
问题是,当我pm2 start -i 5 server.js
在集群模式下启动服务器时,设备连接工作正常,但express
部分给我带来了问题。
例如:当我curl -XPOST https://localhost:8080/send/device_id -d '{"command": "test"}'
在 80% 的时间内使用时,这将转到错误的实例server.js
,因为有五个server.js
正在运行的副本,每个副本都有express
服务器,并且由于 PM2 管理所有内容,我的请求将到达给定的tcp
服务器device_id
5 次中有 1 次连接。按照我的理解,PM2 启动 5 个实例,server.js
并管理和平衡 和 的tcp
连接express
。
所以,我的问题是,我应该如何管理这个?有没有办法告诉 PM2 将端口转发8080
到集群中所有正在运行的实例?这样我可以向所有实例发送单个命令,并在实例中检查 device_id 是否已连接,并写入它的套接字。
这可能吗?如果可以,这是个好主意吗?如果不是,那么正确的方法是什么?
希望我设法解释
问候
* 编辑 *
从最初的问题可能不清楚,但有socket
问题是从net.createServer
函数传递的,比如
actions-on-google - 智能家居温度设置读数(摄氏度)自定义范围
我正在使用 action.devices.types.THERMOSTAT 和 action.devices.traits.TemperatureSetting,我想将摄氏度的自定义范围设置为 16 到 28 是否可能?我尝试使用 bufferRangeCelsius 属性,但它对范围和默认摄氏度范围(从 10 到 32 出现)没有产生任何影响,我尝试过如下所示,
node.js - Bcrypt NodeJS比较密码总是返回false
所以很明显我正在使用 bcrypt 来注册和散列我的密码,这很有效。现在我正在登录,我必须在数据库中比较表单密码和哈希密码,这就是我这样做的方式:
它总是返回 false;如果我 console.log result[0].password,我会找回我的散列密码,这很好,但为什么它总是返回 false?
node.js - nodejs 请求模块在本地主机上返回 ECONNREFUSED
我正在尝试对我的本地主机进行 api 调用,但我总是得到
Error: connect ECONNREFUSED 127.0.0.1:5005 at Object.exports._errnoException (util.js:1022:11)
如果我使用 IP 而不是 localhost,它确实有效
node.js - 如何在 Nodejs 中基于 ISODate 获取数据?
我在 MongoDB 中有 ISOdate 格式的数据。当我在 mango shell 中运行查询时,它可以正常工作。
但是当我在 nodejs 中使用相同的查询时,它给出了一个错误
仍然没有获取价值