在快速js中路由子路径后找不到资源404

时间:2017-12-01 00:53:18

标签: node.js routing

看起来很傻,但我无法找到合适的答案; 我正在尝试使用Express js中的params处理get请求:

app.get('/status/:id', function(req, res, next) {

        var par = req.params.id;
    .
    .
    .
        res.render('profile', {xxx: par}); 
    });

但问题是资源没有加载,我的静态资源出现404错误。

错误:

  

GET /status/stylesheets/style.css 404 31.761 ms - 3296 GET   /status/stylesheets/customize.css 404 53.355 ms - 3296 GET   /status/javascripts/signup.js 404 91.891 ms - 3296 GET   /images/Lizofile-white.png 304 0.564 ms - - GET /images/profile.png   304 0.769 ms - - GET /images/comment.png 304 0.485 ms - - GET   /images/achievements.png 304 0.511 ms - - GET /images/score.png 304   0.641 ms - - GET /images/friends.png 304 0.512 ms - - GET /status/stylesheets/style.css 404 24.126 ms - 3296 GET   /status/stylesheets/customize.css 404 15.016 ms - 3296 GET   /status/javascripts/signup.js 404 16.238 ms - 3296

我可以看到在我的资源开头添加了 / status 目录'路径。 我尝试通过修改 app.use(express.static(path.join(__ dirname,' / public')); 来解决这个问题没有工作。

app.js

> var app = express();
> 
> 
> 
> 
> app.use(session({   secret: 'osjdh018013bashjdas',   resave: false,  
> saveUninitialized: true }));
> 
> 
> 
> view engine setup app.set('views', path.join(__dirname, 'views'));
> app.set('view engine', 'jade');
> 
>
> app.use(logger('dev')); app.use(bodyParser.json()); //pasrse html,
> jason parser app.use(bodyParser.urlencoded({ extended: true }));
> app.use(cookieParser()); app.use(express.static(path.join(__dirname,
> '/public')));
> 
> app.use('/', index);//home app.use('/login', login);
> app.use('/profile', profile);//user app.use('/register',
> register);//user
> 
> app.use(function(req, res, next) {
> 
>     res.header('Access-Control-Allow-Credentials', true);
>     res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
>     res.header("Access-Control-Allow-Origin", "http://localhost");
>     res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
>     next(); });

我希望提前发表任何意见。

1 个答案:

答案 0 :(得分:1)

听起来你正在使用静态文件的纯粹相对引用。

如果你有这样的事情:

<link href="stylesheets/style.css">

网址为:

的网页内
 http://somedomain.com/status/xxx

然后,浏览器会将您对stylesheets/style.css的请求视为相对于网页的域和路径的请求。因此,它会将http://somedomain.com/status添加到请求的URL的前面,并询问服务器:

http://somedomain.com/status/stylesheets/style.css

这不是你想要的。相反,如果您使用/启动它们,则将页面中的资源引用更改为仅相对于域相关而不是路径相对,如下所示:

<link href="/stylesheets/style.css">

然后,只会添加页面域,浏览器会请求:

http://somedomain.com/stylesheets/style.css

应该是您的服务器所期望的。