Closed
Description
1. 配置
根据官方路由配置说明在 .umirc.js 中添加“umi-plugin-routes” 相关设置后
2.异常信息
对于开发模式中不存在的路由所返回的页面列表中仍将显示过滤掉的路由:
3.原因分析
在Umi.js生成生成的 /pages/.umi/router.js 文件中向 umi-build-dev/lib/plugins/404/NotFound.js 组件所注入的routes信息并未完全排除所过滤的路由
4.临时解决方案
方案1:修改NotFound页面
在./umi/pages/router.js 文件所引用的 NotFound.js文件中对routes信息过滤,修改 _default函数如下:
var _default = (0, _withRouter.default)(function (_ref) {
var location = _ref.location,
pagesPath = _ref.pagesPath;
let routes = JSON.parse(_ref.routes);
routes[0].routes = routes[0].routes.filter(item => !(item.component.includes('/components/') || item.component.includes('/services/') || item.component.includes('/models/')));
var jsFile = (0, _guessJSFileFromPath.default)(location.pathname);
return _react.default.createElement("div", null, _react.default.createElement("h1", null, "umi development 404 page"), _react.default.createElement("p", null, "There's not a page yet at ", _react.default.createElement("code", null, location.pathname)), _react.default.createElement("p", null, "Create a React.js component in your pages directory at", ' ', _react.default.createElement("code", null, pagesPath, "/", jsFile), ' ', "and this page will automatically refresh to show the new page component you created."), _react.default.createElement("h2", null, "Page List"), renderRoutes(routes));
});
方案2:手工配置根目录 .umirc.js 中的路由信息,无法享受pages中目录即路由的便捷性。
此处配置发现另一BUG:component的相对路径要以 page/.umi/ 目录为准(../pages/yourRouter),而不是.umirc.js文件所在的根目录(./src/page/yourRouter/)
export default{
routes: [{
"path": "/",
"component": "../layouts/index.js",
"routes": [{
"path": "/404",
"exact": true,
"component": "../pages/404.js"
}, {
"path": "/500",
"exact": true,
"component": "../pages/500.js"
},
// .... 你的路由配置
}]
}
Metadata
Metadata
Assignees
Labels
No labels