繁体   English   中英

app#get() 什么都不做,(node.js + express.js)

[英]app#get() not doing anything, (node.js + express.js)

我最近今天想切换到表达 4.x 科学,因为我使用 3.xa 的时间比需要的时间长。

基本上我做了一个非常简单的应用程序,但 app#get() 根本不起作用!

这是我的代码:


/** Declaring constants */
const config = require( "./config.json" );
const methods = require( "./depending_methods.js" );

const sessions = new Map( );

const express = require( "express" );
const path = require( "path" );
const bodyParser = require( "body-parser" );
const app = express();


let currentdata;

/**
 * some mongodb stuff ##redacted
 */

/** Configuration Express + HBS and Middleware */
    app.use(require('morgan')("dev"))
    app.use(bodyParser.json());
    app.use(require( "cookie-parser" ));
    app.use(express.static('static'));
    app.use('./views', express.static(path.join(__dirname, './views')));
    app.use(express.static(path.join(__dirname, './views')));
    app.use(bodyParser.urlencoded({ extended: false }));
    app.set('view engine', 'hbs');
    app.set('views', path.join(__dirname, 'views'));

    require('hbs').registerHelper(require('handlebars-helpers')());


    console.log("registered get()")
app.get("/", function(req, res) {
    console.log("triggered /");
    res.send("Hey");
})


/** Configure port and start the Server! */
app.listen(config.port);
console.log("skynet is on: http://127.0.0.1:" + config.port + "/");

当我尝试访问 127.0.0.1:[port]/ 或执行 curl 请求时:

“触发的/”不会发生,但开始时的“注册的get()”会发生。

我还在控制台中得到了强制性的“GET / - - ms - -”

我做错了什么?

app.get("/", function(req, res) {
    console.log("triggered /");
    res.send("Hey");
});

意味着您必须向http://127.0.0.1:[whatever-port-you-use]/发出 GET http 请求才能触发回调函数; 这是由 URL 末尾的/表示的root路由。

更新

经过澄清和进一步审查,问题出在以下线路上:

app.use(require( "cookie-parser" ));

正确的写法是:

app.use( (require( "cookie-parser" ))() );
//see (..) surrounding require and () after it

或者,您可以分两步完成,如cookie-parser页面所示:

const cookieParser = require( "cookie-parser" );
app.use( cookieParser() ); //NOT app.use( cookieParser );

笔记

我还建议您阅读其他模块的文档。

你的问题和这个很相似。 正如他们所说,摩根包在控制台中打印“GET / - - ms - -”。 您没有被“触发/”的原因可能是您或您的包之一忘记调用 next()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM