网站搜索

javascript - NodeJS & Socket.IO:发出请求事件并获取响应,我应该什么时候/在哪里绑定监听器?

我目前在想在这种情况下可能的最佳编程实践是什么:

假设我有一个客户端连接到我的服务器。这个客户端正在通过一个auth事件和他的用户名向服务器请求认证。

socket = io(); socket.emit('auth', "John");

在这个简单的情况下,服务器会响应一个包含用户 ID 的 auth_succeed 事件。

io.on('connection',

阅读更多 →

node.js - 使用 nodejs 将 JavaScript 变量传入 shell 命令

我正在开发一个 nodejs 应用程序,我需要将一个多行字符串输入到一个 shell 命令中。我不是 shell 脚本专家,但如果我在终端中运行这个命令,它就能正常工作:

这是我在 Node.js 方面得到的。dayone 命令确实可用,但没有任何东西被传入它。

const cp = require('child_process'); const terminal = cp.spawn('bash'); var multiLineVariab

阅读更多 →

javascript - 使用 multer 和 nodejs 返回上传文件的文件名

我正在使用 Ionic 2 创建一个简单的应用程序作为学习经验,该应用程序连接到一个运行 Multer 的 Node 服务器以上传图片。我遇到的问题是,我需要将 Multer 最终生成的文件名返回给上传它的应用程序,以便在本地保存。我使用 @ionic/cloud-angular 的 Auth 和 User 模块进行身份验证和用户信息管理。User 对象有一个 details 对象,其中包含“name”、“email”、“username”、“image”等信息。因此,当一张图片上传到 Node 服务器并由 Multer 保存后,我需要将该文件名返回给应用程序,以便我可以更新 user.details.image 属性。

这是我的节点服务器的一个简单版本...

var express = require('express'); var http = require('http'); var bodyParser = require('body-parser'); var multer = require('multer'); var cor

阅读更多 →

javascript - 我如何在运行于 NodeJS 的 ClojureScript 中读取 EDN 文件?

我有一个简单的 EDN 格式数据文件,需要在运行于 NodeJS 的 ClojureScript CLI 应用中读取,但 Clojure 中的相关核心库似乎都不可用(core.java.io/read、clojure.edn/read 等)。

我应该使用什么替代品呢?

答案#1

你可以使用:

(ns app.core (:require [cljs.reader :as reader])) (def fs (js/require "fs"))

阅读更多 →

javascript - 在 nodeJs 中从 .env 获取的字符串在换行后不可读

我在 NodeJS 应用程序的 .env 文件中添加了一个关键变量,如下所示。

KEY="---Key--- .............. .............. "

当我尝试从 .env 获取这个变量时,它只得到“---Key---”。我不知道为什么。

答案#1

你不能将环境变量分成多行。只需将其写在一行上,使用双引号,并在行之间使用\n。你可以在这里查看:https://github.com/motdotla/dotenv#

阅读更多 →

javascript - Babel 在 NodeJS 中无法使用展开运算符

我正在使用 Babel (7.5.0) 和最新的 NodeJS (12.x),所以扩展运算符已经被 NodeJS 处理了,我不希望 Babel 对其进行修改。

这是我的 .babelrc :

{ "plugins": [ "@babel/plugin-proposal-class-properties", "@babel/plugin-transform-runtime" ], "presets": [ [ "@babel/preset-env", {

阅读更多 →

javascript - 如何在 NodeJS 中从 Multipart 响应中提取/解析二进制内容?

我想从我拥有的如下多部分响应中提取二进制内容 -

我无法访问任何请求对象(Express/NodeJS)。我只有这个响应对象,我想解析它并提取其中的二进制部分。

编辑 -

为了使事情更加清楚 -

  1. 我有一个端点(不是传统的 Express 应用,而是 FaaS)——叫做“/fileUpload”

  2. 此端点接受所有类型的请求 - GET、POST、PUT(FaaS)。

  3. 阅读更多 →

javascript - SyntaxError: 当从 IntellijIDEA 启动 NodeJS 时,在模块外不能使用 import 语句

我尝试用 React JS 创建 hello world 应用程序。我在 IntelliJ IDEA 中创建了 NodeJS 应用程序。创建一个 helloworld.js 文件,并将这段代码添加到该文件中

import React from 'react'; ReactDOM.render( <h1>Hello, world!</h1>, document.getElementById('root') );

阅读更多 →

javascript - Nodejs 在底层是如何进行 I/O 的?

我知道 Node.js 使用 libuv 提供的线程池来执行并发任务。我读到 Node.js 只需要其中一个线程来处理所有的 I/O 密集型活动

那么非阻塞文件操作是如何发生的?

如果我遍历一个包含 100 个文件的文件夹并使用 readFile() 打开它们,节点、磁盘和操作系统之间实际上会发生什么?

如果在其他一些多线程且阻塞的语言中执行相同的操作会导致线程等待 I/O 完成,那么在 Node.js 中谁在等待 I/O 完成?特别是当同时发生多个文件操作时?

谢谢你!

答案#1

Node.js 中的文件 IO 使用线程池。默认情况下,线程池中有 4 个线程。

当一些 Javascript 在 nodejs 中调用像 fs.open() 这样的文件操作时,该调用会被路由到 nodejs 实现中的 libuv 库的某些本地代码。该代码会将具体的文件操作添加到等待操作系统线程的队列中。如果操作系统线程立即可用,那

阅读更多 →

javascript - 是否可以将 JS 应用程序和 NodeJS 解释器编译成一个可执行文件?

是否可以将 JS 应用程序和 NodeJS 解释器编译成一个可分发的单一可执行文件?

答案#1

你需要一台安装了 git 和 python 的 Linux 电脑,然后是丑陋的解决方案:

git clone git://github.com/ry/node.git cd node vim src/node.js # add your code to end before "process.lo

阅读更多 →