我是一名使用express.js创建网络应用程序的node.js开发人员.到现在为止,我的问题是:
每当我在我的计算机上创建一个应用程序时,npm安装它的东西并运行它(使用节点app.js和nodemon)我在控制台中收到这条消息:
connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
connect.limit() will be removed in connect 3.0
Express server listening on port 3000
Run Code Online (Sandbox Code Playgroud)
该应用程序工作,这没关系.但是,当我克隆在其他计算机上创建的应用程序时,我没有收到该消息,所以我想我的计算机中有一些过时的东西.
我去了留言中提到的网站并确认了我的推测.这是一个弃用警告.但是,我已更新节点和npm并全局表达,但我仍然得到了说明.
因此,我的问题是:我不知道我需要更新什么才能摆脱弃用说明,因为它们吓坏了我.
我希望有一个人可以帮助我.非常感谢.
我正在编写一个提供静态html,css和javascript的小型演示Web服务器.服务器看起来像
(function () {
"use strict";
var http = require("http");
var connect = require('connect');
var app = connect()
.use(connect.logger('dev'))
.use(connect.static('home'));
var server = http.createServer(app);
server.listen(9999, function () {
console.log('server is listening');
});
})();
Run Code Online (Sandbox Code Playgroud)
我的客户端javascript使ajax调用到不同的服务器.我该如何添加
Access-Control-Allow-Origin: http://example.com
Run Code Online (Sandbox Code Playgroud)
到我的服务器响应,以便客户端javascript可以进行ajax调用?
我正在做node.js的教程,课程教我如何使用node创建服务器.在下面的代码中,connect.bodyParser()行有什么作用?
var app = connect()
.use(connect.bodyParser())
.use(connect.static('public'))
.use(function (req, res) {
if (req.url === '/process') {
res.end(req.body.name + ' would repeat ' + req.body.repeat + ' times.');
} else {
res.end("Invalid Request");
}
})
.listen(3000);
Run Code Online (Sandbox Code Playgroud) 有时在开发过程中,防止HTTP 304响应(支持200)会非常好,并使Connect/Express静态中间件读取文件系统的每个响应,而不是进行任何缓存.
我试过玩maxAge0和1的值,但无济于事:
app.use(express.static(__dirname + '/public', { maxAge: 1 }))
Run Code Online (Sandbox Code Playgroud) 我是Nodejs的新手.我在route目录中有一个app.js和一个index.js .我有一个app.use(multer....).我还app.post('filter-reports')定义了实际将文件内容上传到服务器的内容.
我有要执行的业务逻辑,并routes/index.js在我打算配置路由的文件中配置了/filter-reports路由.请帮我理解我哪里错了.我需要使用multerindex.js文件中运行的业务逻辑来上传文件.
app.js源代码:
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var _ = require('underscore');
var cache = require('js-cache');
var multer = require('multer');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
// view engine setup
app.set('views', …Run Code Online (Sandbox Code Playgroud) 我在尝试从数据库中删除文档时收到此错误:
无法获取/删除/ 532fa5e56f885c7fec5223b1fds
如何成功删除文档?
app.js
//Delete
app.del('/delete/:id', routes.delete_offer);
Run Code Online (Sandbox Code Playgroud)
路线/ index.js
//Delete
exports.delete_offer = function (req,res){
Offer.findOneAndRemove({'_id' : req.params.id}, function (err,offer){
res.redirect('/newsfeed');
});
};
Run Code Online (Sandbox Code Playgroud)
意见/ dashboard.jade
- each offer in offers
div.offer.row
a(href="/offer/" + offer._id)
div.columns
div.sell_type
p=offer.type
div.small-8.columns.sell_info
p.sell_price="$" + offer.fixedPrice() + " "
p.sell_location="@ " + offer.location + " ›"
div.small-4.columns.sell_pic
p=offer.user_id
a.delete(href="/delete/" + offer._id)="Delete Offer"
Run Code Online (Sandbox Code Playgroud) 我运行node.js如下:
> http = require('http')
> http.get('http://myhost.local:8080',
function (res) { console.log("RES" + res) }
).on('error', function (e) { console.log("Error:", e) })
> uri = require('url').parse("http://myhost.local:8080")
{ protocol: 'http:',
slashes: true,
auth: null,
host: 'myhost.local:8080',
port: '8080',
hostname: 'myhost.local',
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: 'http://myhost.local:8080/' }
> http.get(uri,
function (res) { console.log("RES" + res) }
).on('error', function (e) { console.log("Error:", e) })
Run Code Online (Sandbox Code Playgroud)
隐式和显式解析的URI都会引发错误,我得到以下两个输出:
错误:{[错误:连接ECONNREFUSED]代码:'ECONNREFUSED',错误号:'ECONNREFUSED',系统调用:'connect'}
主机myhost.local是localhostin 的别名/etc/hosts,是:
127.0.0.1 localhost myhost.local …Run Code Online (Sandbox Code Playgroud) 我有一个 Node 服务器,它使用 Connect 插入一些中间件,尝试转换来自 node-http-proxy 的响应流。有时,这种转换可能会非常慢,在这种情况下,最好简单地返回不包含转换或包含其部分应用程序的响应。
在我的应用程序中,我尝试在转换中间件的上下文中在几毫秒后setTimeout调用。next这通常有效,但会暴露一个竞争条件,如果中间件已经调用next然后setTimeout触发并执行相同的操作,则会出现如下错误:Error: Can't set headers after they are sent.
最终,我演变了以实例作为其第一个参数setTimeout进行调用,然后在我的中间件链中会捕获该错误并假设将开始通过 发送响应。这很有效,令人惊讶的是我可以将超时设置为几乎为零,并且响应会发生得更快并且更完整。nextErrorres.headersSentfalseres.end.call(res)
我觉得最后一种方法有点破解,并且不能免受相同竞争条件的影响,但也许看起来更有弹性。所以我想知道 Node 和 Connect 有什么样的惯用方法来处理这种事情。
我怎样才能让缓慢的中间件超时并简单地返回响应流?
目前,这似乎或多或少达到了我想要的效果,但又感觉有点恶心。
let resTimedout = false;
const timeout = setTimeout(() => {
if (!resTimedout) {
resTimedout = true;
next();
}
}, 100);
getSelectors(headers, uri, (selectors) => {
const resSelectors = Object.keys(selectors).map((selector) => {
...
};
const rewrite = resRewrite(resSelectors);
rewrite(req, res, () …Run Code Online (Sandbox Code Playgroud) 这是我的message.test.js文件.
var expect = require('expect');
var {generateMessage} = require('./message');
describe('generateMessage', () => {
it('should generate correct message object', () => {
var from = 'Jen';
var text = 'Some message';
var message = generateMessage(from, text);
expect(message.createdAt).toBeA('number');
expect(message).toInclude({from, text});
});
});
Run Code Online (Sandbox Code Playgroud)
错误:priya @ priya-pro:〜/ node-chat-app $ npm test
node-chat-app@1.0.0 test/home/priya/node-chat-app mocha server/**/*.test.js generateMessage 1)应生成正确的消息对象
0传球(12ms)1失败
1)generateMessage应该生成正确的消息对象:TypeError:expect(...).toBeA不是Context.it中的函数(server/utils/message.test.js:12:31)
错误的ERR!测试失败.请参阅上文了解更多详情.
帮我...
我正在尝试为我正在尝试构建的登录页面实现一个非常基本的错误消息.发布请求的代码如下.
app.post('/login',function(req,res){
User.findOne({username:req.body.user.username},function(err,info){
if(err){
req.flash('error','There was an error on our end. Sorry about that.');
res.redirect('/');
}
if(info==null){
req.flash('error', 'Incorrect Username. Please try again, or make an account');
res.redirect('/login');
}
else{
if(req.body.user.password==info.password){
res.redirect('/users/' + info.username);
}
else{
req.flash('error', 'Incorrect Password');
res.redirect('/login');
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
虽然重定向确实发生,但是当我触发空案例时,我从未看到错误消息.我的路线获取方法如下:
app.get('/login',function(req,res){
res.render('login',{
title: 'Login'
});
});
Run Code Online (Sandbox Code Playgroud)