我有一个 Express 应用程序,只提供静态 html 文件。
let express = require('express');
let path = require('path');
let cookieParser = require('cookie-parser');
let logger = require('morgan');
let indexRouter = require('./routes/index');
let usersRouter = require('./routes/users');
let appRouter = require('./routes/app');
let app = express();
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/app', appRouter);
module.exports = app;
在 /public
中,我有 index.html
和 app.html
在 /routes/
中,我有 index.js
和 app.js
两者基本相同
index.js
let express = require('express');
let router = express.Router();
router.get('/', function (req, res, next) {
res.render('index');
});
module.exports = router;
app.js
let express = require('express');
let router = express.Router();
router.get('/', function (req, res, next) {
res.render('app');
});
module.exports = router;
当我访问localhost:3000
时,index.html
文件完美显示。
当我访问localhost:3000/app
时,我收到错误
Error: No default engine was specified and no extension was provided. at new View (C:\a\Web\todo\node_modules\express\lib\view.js:61:11) at Function.render (C:\a\Web\todo\node_modules\express\lib\application.js:570:12) at ServerResponse.render (C:\a\Web\todo\node_modules\express\lib\response.js:1008:7) at C:\Voliware\Web\todo\routes\app.js:5:9 at Layer.handle [as handle_request] (C:\a\Web\todo\node_modules\express\lib\router\layer.js:95:5) at next (C:\a\Web\todo\node_modules\express\lib\router\route.js:137:13) at Route.dispatch (C:\a\Web\todo\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\a\Web\todo\node_modules\express\lib\router\layer.js:95:5) at C:\a\Web\todo\node_modules\express\lib\router\index.js:281:22 at Function.process_params (C:\a\Web\todo\node_modules\express\lib\router\index.js:335:12)
最佳答案
你说“只提供静态 html 文件。”。然后标记以下 3 行。
//app.use('/',indexRouter);
//app.use('/users', usersRouter);
//app.use('/app', appRouter);
并访问访问localhost:3000/app.html
而不是访问localhost:3000/app
。因为您没有名为“app”的静态文件。
关于javascript - Express 呈现index.html 但不呈现其他页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52846491/