我在express js中丢失了URL
Where i lost my URL in express js
我试图构建一个具有不同子域的应用程序。我可以通过subdomain
模块获取每个子域,并可以访问like/sudbdomain/user。我的模块中有两个不同的url,即使它共享相同的回调句柄来监听服务器
让我们简要地看一下代码
main.js
var subdomain=require('subdomain')({ base: 'example.loc' });
var express=require('express')
var user=require('./app/user');
express()
.use(subdomain)
.use(function (req,res,next) {
console.log('This is from main');
console.log(req.url);
next();
})
.use('/subdomain/user',user)
.listen(8808)
user.js
var app = require('express')();
var routes=require('./routes');
app
.use(routes);
module.exports=app
路由/索引.js
var express=require('express');
var router=express.Router();
router.use(function (req,res,next) {
console.log('This from user');
console.log(req.url);
next();
})
router.get('/subdomain/user',function(req,res,next){
res.send('This is from user');
});
module.exports = router;
如果我调用url,user.example.loc
将按如下获取日志
This is from main
/subdomain/user
This is from user
/
问题是,我在哪里丢失了我使用子域模块分配的url。我检查了子域模块的来源,我找不到这个问题的任何原因。
一个express app
实际上是一个Router
,而Router.use()
在处理之前会从url中剥离挂载路径。
来自Router
文档:
每个express应用程序都有一个内置的
app
路由器。
来自Router.use()
文档:
"装载"路径被剥离,对中间件不可见作用此功能的主要效果是安装了中间件无论其"前缀"路径名如何,都可以在不更改代码的情况下运行。
所以,你在这里的功能:
router.get('/subdomain/user',function(req,res,next){
res.send('This is from user');
});
没有被调用,因为它所属的router
已安装到/subdomain/user
,并且被剥离(正如您所看到的)。如果您将其路径更改为/
,它应该可以工作:
router.get('/',function(req,res,next){
res.send('This is from user');
});
相关文章:
- 使用express.具有多个url和可选参数的Router()
- 在express应用程序中,请求参数两次附加到URL
- Express编辑URL查询为“”;favicon.ico”;
- 在nodejs (express/http)中获取url的响应
- 如何根据传入的 req.url 将 express.cookieSession 设置为路径
- 如何在 Angular JS、Node JS、Express 中获取 URL 参数
- 在 express 中合并 req.params 和 req.url
- node.js express和猫鼬默认为区分大小写的URL
- 重写 Node.js 和 Express 应用程序中的 URL
- 使用express时在EJS视图中查找当前url
- 有没有一种方法可以在express.js中的url路由中执行动态键/值参数
- Express中间件中对request.url的更改是否持续到下一个中间件
- 如何使用express JS以特定方式从URL中读取参数
- 如何通过在express中发送一些数据将用户重定向到新的url
- Node.js、Express&Ghost子目录URL解析错误
- 使用express.js获取url的查询字符串
- 我在express js中丢失了URL
- Node.js Express赢得't提供绝对的URL.js文件
- Express js重定向-dos't更改url并且不't加载静态文件
- 如果你使用2级URL, Express会将URL的第一部分添加到注入中