- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 NodeJS 的新手,正在学习本教程系列。
https://www.youtube.com/watch?v=49sWXJPk10Q&list=PLO-hrPk0zuI18xlF_480s6UiaGD7hBqJa&index=15
在这个特定的视频中,我在提交表单后遇到了一些错误。我有 2 个疑问,在这个网站上搜索没有得到明确的答案。我希望你能更清楚地告诉我。
1.在 users.js 中,第 32 行显示未定义的 profileimage,尽管我有一个名称为 profileimage 的文件字段。
2.如果把那行改成req.body.profileimage,不会报错,但我觉得还是不对。提交表单时,nodeJS 抛出错误
错误“发送后无法设置标题”
我尝试阅读其他类似的问题,但我无法将其与我的程序联系起来(因为我没有在我的程序中明确设置任何标题)。请更深入地了解这两个问题。
var express = require('express');
var router = express.Router();
//var User = require('../models/user');
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/register', function(req, res, next) {
res.render('register', {
'title': "Register"
});
});
router.get('/login', function(req, res, next) {
res.render('login', {
'title': "Login"
});
});
router.post('/register', function(req, res, next) {
//Get form values
var name = req.body.name;
var email = req.body.email;
var password = req.body.password;
var cpassword = req.body.cpassword;
//Check for image field
if(req.files.profileimage) {
console.log('Uploading File...');
//File Info
var profileImageOriginalName = req.files.profileimage.originalname;
var profileImageName = req.files.profileimage.name;
var profileImageMime = req.files.profileimage.mimetype;
var profileImagePath = req.files.profileimage.path;
var profileImageExt = req.files.profileimage.extension;
var profileImageSize = req.files.profileimage.size;
}
else {
var profileImageName = 'default.png';
}
//form validation
req.checkBody('name','Name field is required').notEmpty();
req.checkBody('email','Email field is required').notEmpty();
req.checkBody('email','Enter a valid Email').isEmail();
req.checkBody('password','Password field is required').notEmpty();
req.checkBody('cpassword','Passwords fields do not match').equals(req.body.password);
var errors = req.validationErrors();
if(errors) {
res.render('register', {
errors: errors,
name: name,
email: email,
password: password
});
}
else {
var newUser = new User({
name: name,
email: email,
password: password,
profileImage: profileImageName
});
}
*/
//Success Message
req.flash('success','You are now registered and may log in');
res.location('/');
res.redirect('/');
});
module.exports = router;
register.jade
extends layout
block content
ul.errors
if errors
each error, i in errors
li.alert.alert-danger #{error.msg}
form.form-signin(method='post',action='/users/register',enctype='multipart/form-data')
h2.form-signin-heading.text-center Register
label.sr-only(for='inputName') Name
input#inputName.form-control(name='name' type='text', placeholder='Name', autofocus='')
label.sr-only(for='inputEmail') Email address
input#inputEmail.form-control(name='email' type='email', placeholder='Email address')
label.sr-only(for='inputPassword') Password
input#inputPassword.form-control(name='password' type='password', placeholder='Password')
label.sr-only(for='inputCPassword') Confirm Password
input#inputCPassword.form-control(name='cpassword' type='password', placeholder='Confirm Password')
label.sr-only(for='inputProfile') Profile Image
input#inputProfile.form-control(name='profileimage' type='file')
button.btn.btn-lg.btn-primary.btn-block(type='submit') Register
更详细的错误报告
POST /users/register 500 91.651 ms - 2704<br>
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11)
at ServerResponse.header (C:\Dev\nodeauth\node_modules\express\lib\response.
js:718:10)
at ServerResponse.send (C:\Dev\nodeauth\node_modules\express\lib\response.js
:163:12)
at done (C:\Dev\nodeauth\node_modules\express\lib\response.js:957:10)
at Object.exports.renderFile (C:\Dev\nodeauth\node_modules\jade\lib\index.js
:374:12)
at View.exports.__express [as engine] (C:\Dev\nodeauth\node_modules\jade\lib
\index.js:417:11)
at View.render (C:\Dev\nodeauth\node_modules\express\lib\view.js:126:8)
at tryRender (C:\Dev\nodeauth\node_modules\express\lib\application.js:639:10
)
at EventEmitter.render (C:\Dev\nodeauth\node_modules\express\lib\application
.js:591:3)
at ServerResponse.render (C:\Dev\nodeauth\node_modules\express\lib\response.
js:961:7)
at C:\Dev\nodeauth\app.js:104:7
at Layer.handle_error (C:\Dev\nodeauth\node_modules\express\lib\router\layer
.js:71:5)
at trim_prefix (C:\Dev\nodeauth\node_modules\express\lib\router\index.js:310
:13)
at C:\Dev\nodeauth\node_modules\express\lib\router\index.js:280:7
at Function.process_params (C:\Dev\nodeauth\node_modules\express\lib\router\
index.js:330:12)
at IncomingMessage.next (C:\Dev\nodeauth\node_modules\express\lib\router\ind
ex.js:271:10)
at done (C:\Dev\nodeauth\node_modules\express\lib\response.js:956:25)
at tryRender (C:\Dev\nodeauth\node_modules\express\lib\application.js:641:5)
at EventEmitter.render (C:\Dev\nodeauth\node_modules\express\lib\application
.js:591:3)
at ServerResponse.render (C:\Dev\nodeauth\node_modules\express\lib\response.
js:961:7)
at C:\Dev\nodeauth\app.js:93:9
at Layer.handle_error (C:\Dev\nodeauth\node_modules\express\lib\router\layer
.js:71:5)
最佳答案
您需要移动此代码:
//Success Message
req.flash('success','You are now registered and may log in');
res.location('/');
res.redirect('/');
它应该在条件内:
else {
var newUser = new User({
name: name,
email: email,
password: password,
profileImage: profileImageName
});
//Success Message
req.flash('success','You are now registered and may log in');
res.location('/');
res.redirect('/');
}
如果你把它放在外面并且你得到一个错误会发生什么。首先你的 if 语句触发:
if(errors) {
res.render('register', {
errors: errors,
name: name,
email: email,
password: password
});
}
当 res.render
被调用时,响应完成并发送 header 。但是:由于您在条件 Express 之外有 res.redirect
和 res.location
也尝试运行它。这就是您收到错误消息的原因。
此外,正如在对您的问题的评论中所指出的,您可以阅读更多 here .
关于javascript - NodeJS 错误 - 发送后无法设置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37251474/
我正在使用 voip 推送通知制作 ios 应用程序。 我想从 Node js 发送 voip 推送通知,但不是很好。 我阅读了本教程 CallKit iOS Swift Tutorial for V
我编写了一个服务器,当浏览器尝试连接到某些站点时,它会检查黑名单并发回 404,但是当我调用 send() 时没有错误,但消息不会出现在网络上浏览器,除非我关闭连接? 有什么建议吗? 接受来自浏览器的
#include int main() { char c = getchar(); //EOF (ctrl + d ) while( ( c = getchar() ) != '?'
我正在尝试使用MailMessage对象通过PowerShell发送电子邮件。该脚本使用Import-CSV来使用文件,然后在电子邮件正文中使用ConvertTo-HTML。由于我要发送的电子邮件客户
我需要创建一个脚本,每 30 秒对网络流量进行一次采样并存储发送/接收的字节。该数据随后用于绘制图形。我编写了一个在 Windows 2012 上完美运行的程序,但我意识到某些 cmdlet 在以前的
我正在运行“autoit3.chm”文件。当它运行时,我想发送一个向下键箭头,但它不起作用: $file = FileGetShortName("C:\Users\PHSD100-SIC\Deskto
当我使用网络浏览器测试我的程序时,我可以很好地写入套接字/FD,所以我决定循环它并在连接中途切断连接,我发现了一个问题。 send() 能够在套接字不可用时关闭整个程序。我认为问题在于该程序陷入了第
我正在运行“autoit3.chm”文件。当它运行时,我想发送一个向下键箭头,但它不起作用: $file = FileGetShortName("C:\Users\PHSD100-SIC\Deskto
所以我试图向自己发送数据并接收数据然后打印它,现在我已经测试了一段时间,我注意到它没有发送任何东西,事实上,也许它是,但我没有正确接收它,我需要这方面的帮助。 这就是我用来发送数据的
问题:开发人员创建自己的序列化格式有多常见?具体来说,我使用 java 本质上将对象作为一个巨大的字符串发送,并用标记来分隔变量。 我的逻辑:我选择这个是因为它几乎消除了语言依赖性(忽略java的修改
我必须在 Linux 上编写一个应用程序,该应用程序需要与具有自定义以太网类型的设备进行通信。甚至在如何编写这样的应用程序中也有很多解决方案。一个缺点是需要 root 访问权限(AFAIK)。之后释放
我有一个包含三个单选按钮选项的表单。我需要将表单数据提交到另一个文件,但由于某种原因,发送的数据包含所选单选按钮的值“on”,而不是 value 属性的值。 我尝试通过 post() 函数手动操作和发
基本上我想实现这样的目标: Process 1 Thread 1 Receive X from process 2 Thread 2 Receive Y from proces
我目前正在 Google App Engine 上开发一个系统,对它还很陌生,我正在使用 Java 平台进行开发。我在 servlet 之间发送 session 对象时遇到问题。我已经在 appeng
当我尝试将“this”(触发的元素)作为参数发送给函数时,函数收到“Object[Document build.php]”作为参数,而不是触发的元素。请让我知道我的错误: function set(a
我正在寻找让我的应用响应联系人 > 发送的魔法咒语。我希望能够接收联系人的 URI 以便检索联系人。谁有 list 过滤器/代码 fragment 吗? 最佳答案 我没有睾丸,但您可以尝试基于 ACT
关于我心爱的套接字的另一个问题。我先解释一下我的情况。之后我会告诉你是什么困扰着我。 我有一个客户端和一个服务器。这两个应用程序都是用 C++ 编写的,实现了 winsock2。连接通过 TCP 和
我看到了这篇文章 http://www.eskimo.com/~scs/cclass/int/sx5.html 但这部分让我感到困惑:如果我们已经使用 send_array 或 send_array_
我对这行代码有疑问。我必须将一个数据包带到一个端口并重新发送到接口(interface)(例如:eth0)。我的程序成功地从端口获取数据包,但是当我重新发送(使用 send())到接口(interfa
我正在尝试编写一个 X11 输入驱动程序,它可以使用我的 Android 手机上的触摸屏来移动和单击鼠标。我可以正常移动鼠标,但我无法让应用程序正确识别点击。我当前的代码位于 https://gist
我是一名优秀的程序员,十分优秀!