首页 > 解决方案 > 快递服务角路线

问题描述

到目前为止,我正在尝试让我的角度路线在 express 中工作,它将加载页面 index.html,如果您从那里导航,它将很好地使用路线,但是如果您打开一个新浏览器并尝试直接转到路线('深层链接')它不起作用......(路由在 ng serve 中起作用)

这是我用来让它为 index.html 服务的东西

    app.use(express.static(__dirname + '/dist'));
    app.use("*",function(req,res){
      res.sendFile(path.join(__dirname,"/dist/index.html"));
    });

如果我尝试去 localhost:3000 它工作正常......当我从那个页面导航时,这些路由也工作正常但是如果我尝试做 localhost:3000/room/3290sfda9328fa98 (该页面包含一个路由:id)然后这没用

这是路线的角度侧

export const routes: Routes = [
  { path: '', component: StartscreenComponent },
  { path: 'room/:id', component: RoomComponent },
  { path: 'createroom', component: StartroomComponent }
];

您返回的错误如下所示:

ReferenceError: path is not defined
    at /Documents/angular8/nodechat/index.js:18:18
    at Layer.handle [as handle_request] (/Documents/angular8/nodechat/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/Documents/angular8/nodechat/node_modules/express/lib/router/index.js:317:13)
    at /Documents/angular8/nodechat/node_modules/express/lib/router/index.js:284:7
    at param (/Documents/angular8/nodechat/node_modules/express/lib/router/index.js:354:14)
    at param (/Documents/angular8/nodechat/node_modules/express/lib/router/index.js:365:14)
    at Function.process_params (/Documents/angular8/nodechat/node_modules/express/lib/router/index.js:410:3)
    at next (/Documents/angular8/nodechat/node_modules/express/lib/router/index.js:275:10)
    at SendStream.error (/Documents/angular8/nodechat/node_modules/serve-static/index.js:121:7)
    at SendStream.emit (events.js:189:13)

这是 index.js 文件的更多内容

const express = require('express');
const app = express();
const router = express.Router();
// const proxy = require('express-http-proxy');
const helmet = require('helmet');
app.use(helmet());
const http = require('http').createServer(app);
const io = require('socket.io')(http);
app.use(express.static(__dirname + '/dist'));
app.use("*",function(req,res){
    res.sendFile(path.join(__dirname,"/dist/index.html"));
});
http.listen(3000, () => {
  console.log('listening on *:3000');
});

标签: angularexpress

解决方案


您需要require(path)先使用它。将此添加到您的顶部index.js

const path = require('path')

推荐阅读