{"id":5167,"date":"2016-07-10T18:21:14","date_gmt":"2016-07-10T10:21:14","guid":{"rendered":"https:\/\/sdeno.com\/?p=5167"},"modified":"2017-01-11T11:24:01","modified_gmt":"2017-01-11T03:24:01","slug":"express%e7%ac%94%e8%ae%b0","status":"publish","type":"post","link":"https:\/\/sdeno.com\/?p=5167","title":{"rendered":"express\u7b14\u8bb0"},"content":{"rendered":"<p>\u5b89\u88c5express\u4ee5\u53canpm\u4f7f\u7528\u65b9\u6cd5\u5c31\u4e0d\u4ecb\u7ecd\u4e86\u8bf7\u81ea\u884c\u67e5\u770b\u76f8\u5173\u5185\u5bb9\uff0c\u8fd9\u91cc\u4e3b\u8981\u8bb2express\u4f7f\u7528\u65b9\u6cd5<br \/>\nexpress 4.x\u4e4b\u540e\u5c31\u628a\u547d\u4ee4\u5206\u79bb\u51fa\u6765\u4e86\uff0c\u6240\u4ee5\u8fd8\u8981\u53e6\u5916\u5b89\u88c5express\u547d\u4ee4\u3002<br \/>\nexpress-generator\u547d\u4ee4\uff0c\u5b89\u88c5\u5b8c\u547d\u4ee4\u4e4b\u540e\u5c31\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4\u751f\u6210\u9ed8\u8ba4\u9879\u76ee\u5305\u4e86\uff0c\u5982\uff1a<\/p>\n<a href=\"https:\/\/sdeno.com\/wp-content\/uploads\/2016\/07\/express-generator.jpg\"><figure class=\"mdx-lazyload-container\" style=\"max-width:172px\"><div style=\"padding-top:115.6976744186%\"><\/div><div class=\"mdx-img-loading-sp mdui-valign\"><div><div class=\"mdui-spinner\"><\/div><\/div><\/div><img width=\"172\" height=\"199\" class=\"alignnone size-full wp-image-5169 lazyload\" title=\"express-generator\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/sdeno.com\/wp-content\/uploads\/2016\/07\/express-generator.jpg\" alt=\"express-generator\"><\/figure><\/a>\n<p>\u8981\u60f3\u6df1\u5165\u8fd8\u8981\u81ea\u5df1\u7ffb\u8bd1\u6587\u6863\uff1a<a href=\"https:\/\/github.com\/expressjs\/express\" target=\"_blank\">https:\/\/github.com\/expressjs\/express<\/a><\/p>\n<pre>npm install express  \/\/\u63a8\u8350\u628aexpress\u9879\u76ee\u5305\u5b89\u88c5\u5728\u672c\u5730\r\nnpm install express-generator -g  \/\/express\u547d\u4ee4\uff0c\u4f7f\u7528express -e www\u547d\u4ee4\u521b\u5efa\u9879\u76ee\uff0c\u5176\u4e2d-e\u8868\u793aejs,\u9ed8\u8ba4\u662fjade<\/pre>\n<p>(\u5982\u679c\u53ea\u6709node_modules\u76ee\u5f55\u53ef\u4ee5\u624b\u52a8\u81ea\u5df1\u8f93\u5165\uff1aexpress -e www \u00a0\u5c31\u80fd\u5728www\u76ee\u5f55\u4e0b\u751f\u6210\u5176\u4ed6\u76ee\u5f55\u548c\u6587\u4ef6\u4e86)<\/p>\n<p>bin \/\/\u8981\u542f\u52a8express\u7684\u6587\u4ef6\u5c31\u5b58\u5728\u6b64\u76ee\u5f55\u4e2d\u7684www\u6587\u4ef6<\/p>\n<p>node_modules \/\/\u5728\u6b64\u76ee\u5f55\u4e2d\u5b89\u88c5\u7684\u7b2c\u4e09\u65b9\u6a21\u5757\u90fd\u5728\u8fd9\u76ee\u5f55\u91cc<\/p>\n<p>public \/\/\u9759\u6001\u76ee\u5f55\u91cc\u9762\u653ejs\u3001css\u3001\u56fe\u7247<\/p>\n<p>routes \/\/\u8def\u7531\uff0c\u5c31\u662f\u5199\u540e\u53f0\u903b\u8f91\u4ee3\u7801\u7684\u5730\u65b9<\/p>\n<p>views \/\/\u5b58\u653ehtml\u7684\u6a21\u677f\u76ee\u5f55<\/p>\n<p>app.js \u00a0\/\/\u914d\u7f6e\u6587\u4ef6<\/p>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"color: #ff0000;\">\u00a0\u4e2d\u6587\u6587\u6863\u53c2\u8003<\/span><\/strong>\uff1a<\/p>\n<p><a href=\"http:\/\/www.cnblogs.com\/ae6623\/p\/4433048.html\" target=\"_blank\">http:\/\/www.cnblogs.com\/ae6623\/p\/4433048.html<\/a><\/p>\n<p><a href=\"https:\/\/www.zybuluo.com\/XiangZhou\/note\/208532\" target=\"_blank\">https:\/\/www.zybuluo.com\/XiangZhou\/note\/208532<\/a><\/p>\n<p><a href=\"https:\/\/sdeno.com\/wp-content\/uploads\/2016\/08\/express_api\/express.html\" target=\"_blank\">https:\/\/sdeno.com\/wp-content\/uploads\/2016\/08\/express_api\/express.html<\/a><\/p>\n<p><a href=\"http:\/\/javascript.ruanyifeng.com\/nodejs\/express.html\" target=\"_blank\">http:\/\/javascript.ruanyifeng.com\/nodejs\/express.html<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\u5b89\u88c5\u597d\u540e\u521d\u6b65\u8c03\u7528express<\/p>\n<pre>var express=require('express');\r\nvar app=express();<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u8bbe\u7f6e\u9759\u6001\u76ee\u5f55<\/span><\/p>\n<pre>express 3.x\u7248\u672c\u91cc\u9762\u5185\u7f6e\u4e86\u5f88\u591a\u4e2d\u95f4\u4ef6\u5230\u4e864.x express.static\u662fexpress\u552f\u4e00\u63d0\u4f9b\u7684\u4e2d\u95f4\u4ef6\r\n\u4f8b\u5982\u6839\u76ee\u5f55\u4e0b\u6709public\u76ee\u5f55\u53ef\u4ee5\u8bbe\u7f6e\u5982\u4e0b\uff1a\r\napp.use(express.static('public'));\r\n\u5728public\u76ee\u5f55\u4e0b\u5b58\u653estyle.css\u3001app.js\u3001hello.html\u3001bg.png,\u5c31\u53ef\u4ee5\u76f4\u63a5\u8bbf\u95ee\u4e86\u5982\uff1a\r\nhttp:\/\/localhost:3000\/style.css\r\nhttp:\/\/localhost:3000\/app.js\r\nhttp:\/\/localhost:3000\/bg.png\r\nhttp:\/\/localhost:3000\/hello.html<\/pre>\n<pre>\u53ef\u4ee5\u8bbe\u7f6e\u591a\u4e2a\u9759\u6001\u76ee\u5f55\r\napp.use(express.static('public'));\r\napp.use(express.static('files'));<\/pre>\n<pre>\u4e3a\u9759\u6001\u76ee\u5f55\u8bbe\u7f6e\u865a\u62df\u76ee\u5f55\uff0c\u5982\uff1a\r\napp.use('\/xuni',express.static('public'));\r\nhttp:\/\/localhost:3000\/xuni\/style.css<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u521b\u5efahttp\u5e94\u7528<\/span><br \/>\n\u539f\u751f\u7684nodejs\u9700\u8981\u6211\u4eec\u624b\u52a8\u52a0\u8f7dhttp\u6a21\u5757\u548c\u624b\u52a8\u521b\u5efahttp.createServer\u3002<br \/>\n\u5982\u679c\u5b89\u88c5\u4e86express\u5c31\u4e0d\u9700\u8981\u8fd9\u4e9b\u4e86\u5185\u7f6e\u5df2\u7ecf\u5e2e\u6211\u4eec\u521b\u5efa\u597d\u4e86\u6211\u4eec\u53ea\u9700\u8981<\/p>\n<pre>var express = require('express');\r\nvar app = express();\r\n\r\napp.get('\/', function(req, res){\r\n  res.send('hello world');\r\n});\r\n\r\napp.listen(3000);<\/pre>\n<p>\u8f93\u5165\u00a0http:\/\/localhost:3000\/<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u521b\u5efa\u540e\u53f0\u76ee\u5f55admin<\/span><br \/>\n\u7f51\u7ad9\u4e00\u822c\u90fd\u5206\u4e3a\u524d\u3001\u540e\u53f0\u4e4b\u5206\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee3\u7801<br \/>\n\u5230routes\u76ee\u5f55\u4e2d\u590d\u5236index.js\u4e00\u4efd\u91cd\u65b0\u547d\u540dadmin.js<\/p>\n<pre>\/\/app.js\r\nvar admin = require('admin');\r\nadmin.use('\/admin', admin); \/\/\u4fee\u6539admin.js\u4ec5\u5bf9admin\u76ee\u5f55\u8d77\u4f5c\u7528<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u00a0app.set()\u548capp.get()<\/span>\u5b58\u50a8\u4e00\u4e9b\u670d\u52a1\u5668\u8bbe\u7f6e<\/p>\n<pre>app.set('name','\u5f20\u4e09');\r\napp.get('name'); \/\/\u5f20\u4e09<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">app.use\u6307\u5b9a\u67d0\u4e2a\u76ee\u5f55\u52a0\u8f7d\u4e2d\u95f4\u4ef6<\/span><\/p>\n<p>\u4e00\u822c\u7528\u6765\u52a0\u8f7d\u4e2d\u95f4\u4ef6<\/p>\n<pre>app.use(function(req,res,next){  \/\/\u52a0\u8f7d\u4e2d\u95f4\u4ef6\u9ed8\u8ba4\u5bf9\u6574\u4e2a\u76ee\u5f55\u6709\u6548\r\n  res.send(\"hello world\");\r\n  next(); \/\/\u4e0d\u52a0\u8fd9\u4e2a\u540e\u9762\u7684app.use\u5c31\u65e0\u6cd5\u52a0\u8f7d\r\n});\r\n\r\napp.use('\/admin',function(req,res,next){ \/\/\u52a0\u8f7d\u4e2d\u95f4\u4ef6\u4ec5\u5bf9admin\u76ee\u5f55\u6709\u6548\r\n res.send(\"hello world\");\r\n next(); \/\/\u4e0d\u52a0\u8fd9\u4e2a\u540e\u9762\u7684app.use\u5c31\u65e0\u6cd5\u52a0\u8f7d\r\n});\r\n\r\napp.use(r1, r2);  \/\/\u540c\u4e00\u4e2a\u9875\u9762\u53ef\u4ee5\u52a0\u8f7d\u591a\u4e2a\u4e2d\u95f4\u4ef6\r\n<\/pre>\n<p>\u5982\u679c\u53ea\u60f3\u67d0\u4e2a\u8def\u7531\u52a0\u8f7d\u6307\u5b9a\u7684\u4e2d\u95f4\u4ef6\u5c31\u4f7f\u7528\u5982\u4e0b\uff1a<\/p>\n<pre>router.get('\/index',<span style=\"color: #ff0000;\">run1<\/span>,fn);   \/\/index\u9875\u9762\u52a0\u8f7d\u6307\u5b9a\u7684run1\u4e2d\u95f4\u4ef6<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u00a0app.configure<\/span>\u8fd9\u91cc\u53ef\u4ee5\u7406\u89e3\u4e3a\u8bbe\u7f6e\u521d\u59cb\u503c<\/p>\n<pre>app.configure(function(){\r\n app.set('name','xiaoshi');\r\n});\r\n\r\n\/\/\u7b49\u4ef7\u4e8e\u5982\u4e0b\r\n\r\napp.set('name','xiaoshi');\r\n\r\n<span style=\"color: #93a1a1;\">\/\/---------------------------------<\/span>\r\n\/\/---------------------------------\r\n\r\napp.configure('development',function(){\r\n app.set('name','xiaoshi');\r\n});\r\n\r\n\/\/\u7b49\u4ef7\u4e8e\u5982\u4e0b\r\n\r\nif('development' == app.get('env')){\r\n app.set('name','xiaoshi');\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">.route(path) \u00a0\/\/\u94fe\u5f0f\u5199\u6cd5<\/span><\/p>\n<pre>var express=require('express');\r\nvar router=express.Router();\r\n\r\nrouter.get('\/index',<span style=\"color: #ff0000;\">[run1,run2]<\/span>,function(req,res,next){    \/\/\u7ea2\u8272\u90e8\u5206\u6b64\u8def\u7531\u52a0\u8f7d\u6307\u5b9a\u7684\u4e2d\u95f4\u4ef6\r\n  \/\/\u4ee3\u7801\r\n})\r\n.post('\/index',function(req,res,next){\r\n  \/\/\u4ee3\u7801\r\n});<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u00a0\u4fee\u6539IP\u5730\u5740<\/span><\/p>\n<pre>app.set('trust proxy', 'loopback, 123.123.123.123')<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u8def\u5f84\u533a\u5206\u5927\u5c0f\u5199<\/span><\/p>\n<pre>\/\/\u5728\u9700\u8981\u542f\u52a8\u7684\u6a21\u5757\u4fee\u6539\u5373\u53ef\r\nvar router = express.Router({caseSensitive: true});\r\n\u542f\u52a8\u540e\r\n\/Foo\r\n\/foo\r\n\u5206\u522b\u662f\u4e24\u4e2a\u8def\u5f84\uff0c\u5982\u679c\u4e0d\u542f\u52a8\u4e0d\u7ba1\u5927\u5c0f\u5199\u9ed8\u8ba4\u90fd\u662f\/foo<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u00a0req<\/span>\u670d\u52a1\u5668\u63a5\u6536\u5ba2\u6237\u7aef\u53d1\u6765\u7684\u6570\u636e<\/p>\n<p>req.setEncoding(&#8220;utf8&#8221;); \u00a0\/\/\u539f\u751f\uff0c\u7528\u6237\u63d0\u4ea4\u7684\u6570\u636e\u8bbe\u7f6e\u4e3autf8<\/p>\n<p>req.body.name \u00a0 \/\/\u83b7\u53d6post\u65b9\u5f0finput \u00a0name=&#8221;name&#8221;\u53d1\u6765\u7684\u6570\u636e<\/p>\n<p>req.params.name \u00a0\/\/\u83b7\u53d6get\u65b9\u5f0f\u63d0\u4ea4\u7684\u6570\u636e \u00a0 \u6216\u8005req.params[0]<\/p>\n<p>req.query.name \u00a0\/\/\u83b7\u53d6get\u63d0\u4ea4\u7684\u6570\u636e<\/p>\n<p>req.cookies \u00a0 \/\/\u53c2\u8003\u300a<a href=\"https:\/\/sdeno.com\/?p=4530\" target=\"_blank\">nodejs\u8bbe\u7f6e\u83b7\u53d6cookies\u6848\u4f8b<\/a>\u300b<\/p>\n<p>req.fresh \/\u00a0req.stale<\/p>\n<p>req.hostname \u00a0 \/\/\u00a0 \u00a0localhost<\/p>\n<p>req.originalUrl \u00a0 \/\/ \u00a0\u83b7\u53d6\u5f53\u524d\u7684\u9875\u9762,\u5982\uff1a\/index\u3001\/home ,\u5982\u679c\u6709\u53c2\u6570\/login\/chenge\/age\u00a0 \u7b49\u4e8e \/login?name=chenge&amp;age=24<\/p>\n<p>req.path \u00a0\/\/\u00a0\u00a0 \u00a0\/login\/chenge\/age \u00a0\u7b49\u4e8e \u00a0\/login?name=chenge&amp;age=24<\/p>\n<p>req.baseUrl \u00a0 \/\/\u67e5\u770b\u5f53\u524d\u7684\u8def\u7531\u4f5c\u7528\u7684\u662f\u54ea\u4e2a\u76ee\u5f55<\/p>\n<p>req.route \u00a0\/\/\u8f93\u51fa\u5f53\u524d\u8def\u7531\u7684\u4fe1\u606f\uff0c\u5982\uff1a<\/p>\n<pre>{ path:\"\/user\/:id?\"\r\n  stack:\r\n  [\r\n    { handle:[Function:userIdHandler],\r\n      name:\"userIdHandler\",\r\n      params:undefined,\r\n      path:undefined,\r\n      keys:[],\r\n      regexp:\/^\\\/?$\/i,\r\n      method:'get'\r\n    }\r\n  ]\r\n  methods:{get:true}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u00a0res<\/span>\u5ba2\u6237\u5230\u6536\u5230\u670d\u52a1\u7aef\u53d1\u6765\u7684\u6570\u636e<\/p>\n<p>res.writeHead(200,{&#8216;Content-Type&#8217;:&#8217;text\/plain&#8217;}); \u00a0\/\/\u539f\u751fnodejs\uff0c\u8bbe\u7f6ehttp\u54cd\u5e94\u5934\u4fe1\u606f<\/p>\n<p>res.type(); \u00a0\/\/\u8bbe\u7f6ehttp\u54cd\u5e94\u5934\u90e8\u7684\u4fe1\u606f\uff0c\u5982\uff1ares.type(&#8216;text\/html&#8217;) \u00a0\u00a0text\/plain \u00a0\u00a0application\/json<\/p>\n<p>res.set(&#8216;Content-Type&#8217;,&#8217;text\/plain&#8217;) \u00a0\/\/\u6548\u679c\u7b49\u540c\u4e8e\u00a0res.type(&#8216;text\/plain&#8217;)<\/p>\n<p>res.get(&#8216;Content-Type&#8217;); \u00a0\/\/\u83b7\u53d6http\u54cd\u5e94\u5934\u4fe1\u606f\u7c7b\u578b \u00a0\u00a0text\/html\u00a0text\/plain application\/json<\/p>\n<p>res.send(&#8216;\u5185\u5bb9&#8217;) \u00a0\/\/\u76f4\u63a5\u8f93\u51fa\u5230\u6d4f\u89c8\u5668\u4e0a<\/p>\n<p>res.cookie \u00a0\/\/\u5728\u5ba2\u6237\u7aef\u521b\u5efacookies<\/p>\n<p>res.end(); \u00a0\/\/\u7ed3\u675f\u54cd\u5e94<\/p>\n<p>res.redirect(&#8216;\/foo\/bar&#8217;); \u00a0 \/\/\u9875\u9762\u8df3\u8f6c<br \/>\nres.redirect(&#8216;http:\/\/example.com&#8217;);<\/p>\n<p>res.render(&#8216;index&#8217;, function(err, html) { \u00a0 \/\/\u5c06\u6570\u636e\u63d2\u5165\u5230html\u4e2d<br \/>\nres.send(html);<br \/>\n});<\/p>\n<p>app.get(&#8216;\/employee\/:uid\/:age&#8217;, function(req, res, next){<br \/>\nres.json(req.params); \/\/ \u6bd4\u5982\uff1a\/111\/30\uff0c\u8fd4\u56de {&#8220;uid&#8221;: 111, &#8220;age&#8221;: 30}<br \/>\n});<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u00a0\u4e2d\u95f4\u4ef6\u00a0<\/span><\/p>\n<p>\u53ef\u4ee5\u7406\u89e3\u4e3afunction\u5c01\u88c5\u597d\u7684\u529f\u80fd\u3002\u4f5c\u7528\u662f\u5f53\u7528\u6237\u63d0\u4ea4\u6570\u636e\u7ed9\u670d\u52a1\u5668\u7684\u8fc7\u7a0b\u4e2d\u8981\u901a\u8fc7\u4e2d\u95f4\u4ef6\u7684\u8fc7\u6ee4\u5904\u7406\u624d\u80fd\u63d0\u4ea4\u5230\u670d\u52a1\u5668\u4e2d\u3002<\/p>\n<pre>\/\/ a.js   \u4e00\u4e2a\u7b80\u5355\u4e2d\u95f4\u4ef6\r\nvar run = function(){\r\n    return function(req,res,next){\r\n          \/\/\u903b\u8f91\u4ee3\u7801\r\n    }\r\n    next()   \/\/\u5982\u679c\u8fd9\u91cc\u4e0d\u5199\u8fd9\u4e2a\uff0c\u90a3\u4e48\u7a0b\u5e8f\u5c31\u4f1a\u6267\u884c\u5230\u6ca1\u6709next()\u7684\u4e2d\u95f4\u4ef6\u5c31\u505c\u6b62\r\n}\r\n\r\nmodule.exports=run;<\/pre>\n<p>&nbsp;<\/p>\n<p>\u8c03\u7528\uff1a<\/p>\n<pre>var a=require('a');\r\n\r\n\u5728\u9700\u8981\u7684\u5730\u65b9\u8c03\u7528\u5373\u53ef\u3002\r\napp.use('\/',a());  \/\/\u5bf9\u6574\u4e2a\u76ee\u5f55\u8d77\u4f5c\u7528\r\nrouter.get('\/index',a(),fn);<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u53c2\u6570\u3001\u8def\u5f84\uff08\u652f\u6301\u6b63\u5219\uff09<\/span><\/p>\n<pre>http:\/\/localhost:3000\/30\r\n\u8bbe\u7f6e\uff1a\/:id?\r\n\u8c03\u7528\uff1areq.param('id')\r\n\u8f93\u51fa\uff1a30<\/pre>\n<pre>http:\/\/localhost:3000\/30\/chenge\r\n\u8bbe\u7f6e\uff1a\/:id\/:name?\r\n\u8c03\u7528\uff1areq.param('id') req.param('name')\r\n\u8f93\u51fa\uff1a30 chenge<\/pre>\n<pre>http:\/\/localhost:3000\/123\/dfsdf%20?%^&amp;*()_\r\n\u8bbe\u7f6e\uff1a\/*\r\n\u4f7f\u7528\u901a\u914d\u7b26\uff0c\u9875\u9762\u4e0d\u7ba1\u8f93\u5165\u4ec0\u4e48\u90fd\u591f\u6b63\u5e38\u8bbf\u95ee<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ff0000;\">\u00a0\u5236\u4f5c404\u3001500\u9875\u9762<\/span><\/p>\n<pre>\/\/404\u548c500\u90fd\u8981\u653e\u5728\u6240\u6709\u903b\u8f91\u4ee3\u7801\u7684\u6700\u4e0b\u9762\r\n\r\napp.use(function(err,req,res,next){  \/\/\u4e00\u5b9a\u8981\u4f20\u5165err\u53c2\u6570\uff0c\u6709\u9875\u9762\u4f46\u662f\u629b\u51fa\u9519\u8bef\u5c31\u6267\u884c\u8fd9\u91cc\r\n console.log(888888+err.message);\r\n res.send('500\u670d\u52a1\u5668\u9519\u8bef');\r\n});\r\n\r\n\r\napp.use(function(req,res,next){ \/\/\u4e00\u5b9a\u4e0d\u80fd\u52a0err\u53c2\u6570\uff0c\u65e0\u9875\u9762\u6267\u884c\u8fd9\u91cc\r\n res.send('404');\r\n});<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5b89\u88c5express\u4ee5\u53canpm\u4f7f\u7528\u65b9\u6cd5\u5c31\u4e0d\u4ecb\u7ecd\u4e86\u8bf7\u81ea\u884c\u67e5\u770b\u76f8\u5173\u5185\u5bb9\uff0c\u8fd9\u91cc\u4e3b\u8981\u8bb2express\u4f7f\u7528\u65b9\u6cd5 expre [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[],"class_list":["post-5167","post","type-post","status-publish","format-standard","hentry","category-nodejs"],"_links":{"self":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts\/5167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5167"}],"version-history":[{"count":0,"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts\/5167\/revisions"}],"wp:attachment":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}