问题标签 [express-4]

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.

0 投票
1 回答
24663 浏览

node.js - Express 4 + pm2 手表不工作

我正在用这个运行 pm2:

问题是当我在根文件夹中更新 app.js 时,它似乎不是自动重启节点。有任何想法吗?

0 投票
2 回答
5273 浏览

node.js - 如何在没有“DEBUG=node:* ./bin/www”的情况下使用 Express 4 运行应用程序

我正在学习 Node.js + Express 4 和运行我的应用程序的命令如下所示:

$>DEBUG=节点:* ./bin/www

这个命令是做什么的?

我怎样才能像这样运行我的应用程序:

$>节点app.js

PS:我需要在phpStrom下运行,不能在配置第一命令中设置。

0 投票
0 回答
909 浏览

node.js - Node Express Busboy 文件和字段上传

当使用带有 express 的 Busboy 处理图像上传时,我可以像这样获取 multipart/form-data 帖子的字段和文件:

我想知道的是,假设有一个实例在我开始处理文件之前我想知道字段是什么。在我的实验中,似乎每次都首先获得这些字段。有谁知道这是否保证总是如此?

0 投票
2 回答
876 浏览

node.js - 正确的nodejs+express app for API的模块化结构

我正在尝试使用 Express 4 为 API 做 nodejs 应用程序。但是当我使应用程序更加模块化时,我的路由不起作用。谁能解释一下我的错误是什么以及 API 应用程序的正确结构应该是什么?

我的 app.js 文件(一些不必要的代码被剪掉了):

我的路线/v1/index.js 文件:

我的路线/v1/user.js 文件:

当我尝试请求这样的网址时:http://localhost:3000/api/v1/user

我只在控制台中看到消息:“请求 API 版本” - 所以 index.js 或 user.js 中没有触发任何代码,

但是,如果我删除 user.js 并将对索引 js 的请求处理(在本例中位于 index.js 中的 user.js 中的 router.route('...')) - 一切正常,我看到消息取决于 VERB 和没有“请求 API 版本”消息。

所以我的问题是:为什么会这样?如果我从 index.js 连接它,为什么不包含 user.js 并且不起作用,在这种情况下我将如何制作模块化应用程序?将所有处理放在 index.js 中 - 不好,因为我需要 /user、/news、/comment 等处理,我想这些处理将在单独的文件中处理。

0 投票
1 回答
1969 浏览

node.js - Express 4 从应用程序堆栈中动态删除中间件

我是节点的新手,我正在尝试在 Express 4 中“即时”添加和删除路线。我正在使用 app.use(path,route) 添加它们,并且我能够在应用程序中找到它们._router.stack 数组,但我无法删除特定的路由器。可能吗?我试过 app._router.stack.splice(myRouterIndex,1) 没有成功。

这是我的例子:

第二个 console.log(app._router.stack) 打印与第一个完全相同。

0 投票
1 回答
292 浏览

node.js - 简单错误:Express 3 -> 4. 移动控制器并请求索引“Route.get() 需要回调函数,但得到了 [object Undefined]”

嗨,我见过类似的错误,但没有一个适用于这种情况。我正在阅读 Getting Mean 这本书,但将 Express 3 上的所有课程应用到 Express 4 应用程序中。

在 app.js 中

在路线/index.js

在 app_server/controllers/main.js

运行应用程序会在 res.render('index', { title: 'Loc8r' }); 上产生“错误:Route.get() 需要回调函数但得到 [object Undefined]” 线。

一直在这几个小时。非常感谢您的帮助。

0 投票
1 回答
10765 浏览

node.js - 如何使用 Socket.IO 最好地构建 Express V4.11+ 项目?

我使用了最新版本的express-generator ( link ) 来生成样板Express 4.11.2项目。

我试图找出设置Socket.IO 1.3.3的最佳方法,其中更改了 Express 框架中的几个主要版本,其中 http 服务器被移动到自己的bin/www文件中。

我很困惑,因为在app.js导出到bin/www.

我已经用谷歌搜索了几个小时,但什么都没有,似乎 Express 框架发展得如此之快,以至于之前的所有文章都已过时。

任何帮助将不胜感激!

我在下面包含了有问题的两个文件,因此您可以在生成样板文件 express 项目后看到我正在使用的内容。

斌/万维网

应用程序.js

0 投票
1 回答
194 浏览

express - 如何在 express.js 4.x 中访问中间件内部的参数?

我想修改中间件中的路由参数:

我如何在中间件中做到这一点?在中间件执行期间似乎尚未解析参数...

0 投票
2 回答
5131 浏览

node.js - ExpressJS 4 在 res.send() 之后执行函数

我是 nodeJS 和异步编程的新手。我使用 express 作为我的应用程序的基础,实际上只有一个路由提供页面并接受来自表单的上传。上传文件后,我想向外部服务发出 POST 请求。尝试在 res.send(200) 之后执行任何代码但是会导致错误消息Error: Can't set headers after they are sent.

我正在使用请求包将帖子发布到外部服务。

postFile 函数本身可以正常工作,甚至在 res.send 之后直接添加 console.log 也会导致相同的错误。响应发送到客户端后,如何继续在服务器上执行代码?

从节点输出日志:

POST /uploads 200 85.201 ms - 23 Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11) at ServerResponse.header (/Users/jason/dev/test/file-share/node_modules/express/lib/response.js:700:10) at ServerResponse.send (/Users/jason/dev/test/file-share/node_modules/express/lib/response.js:154:12) at fn (/Users/jason/dev/test/file-share/node_modules/express/lib/response.js:934:10) at View.exports.renderFile [as engine] (/Users/jason/dev/test/file-share/node_modules/jade/lib/index.js:374:12) at View.render (/Users/jason/dev/test/file-share/node_modules/express/lib/view.js:93:8) at EventEmitter.app.render (/Users/jason/dev/test/file-share/node_modules/express/lib/application.js:566:10) at ServerResponse.res.render (/Users/jason/dev/test/file-share/node_modules/express/lib/response.js:938:7) at /Users/jason/dev/test/file-share/app.js:58:7 at Layer.handle_error (/Users/jason/dev/test/file-share/node_modules/express/lib/router/layer.js:58:5)

0 投票
2 回答
563 浏览

javascript - 无法在 Express 4 中通过请求发送 cookie

这是我的初始配置:

然后在我的控制器中(它通过一个死的简单路由器路由到一个控制器,然后根据类似 Rails 的命名约定呈现适当的操作)我会做这样的事情:

请注意,这this.services.render.view只是一项服务,因此我不必编写res.render('./app/controllers' + controller + '/' + action)

注意控制器中的 res.cookie 行(express.js 上的文档)。这就是官方文档所说的,事实上,它是在浏览器中设置的:

在此处输入图像描述

但是, res.cookie 上面的行是一个日志,我想我们会test_cookie在其中包含,但是:

在此处输入图像描述

我每次得到的只是一个标准的空白cookie,即使它是在浏览器端设置的并且据说是发送的。

我的问题是:如何在 Express 4 中正确设置和接收 cookie?