我正在尝试使用 TypeScript 创建一个 Web 应用程序。我的 app.js 文件创建了一个服务器,但我定义的路由从未被命中。相反,显示项目根目录下的服务器上的文件。
这是我的代码。
//app.ts
import * as express from 'express';
import * as http from 'http-server';
let app = express();
app.set('port', 443);
app.set('views', './views');
app.set('view engine', 'jade');
app.get('/', function(req: any, res: any) {
// This code is never reached on 'GET /' requests.
res.render('index');
});
app.use(function(req: any, res: any, next: any) {});
app.use(function(err, req, res, next) {});
http.createServer().listen(app.get('port'));
console.log("Listening...");
当我访问 localhost:443
时,我看到了下图。
在处理代码时,我可以执行 app.render()
调用,以在调试器中将渲染的 HTML 作为字符串查看,这超出了我的能力范围这个配置,但即使仍然只是调用 app.render('index');
实际上也不会渲染任何东西。示例如下。
app.render('index', function(err: Error, html: string) {
console.log(html); // Outputs the rendered view, but it is not rendered on the page.
});
你觉得怎么样?
最佳答案
您尚未使用 Express 实例作为服务器。
你需要这样做
http.createServer(app).listen(app.get('port'));
或者
app.listen(app.get('port'))
基本上,您在没有任何处理程序的情况下调用了服务器,因此它显示了主脚本的目录。
您已创建 Express 实例,但未添加到 http
服务器。
关于javascript - 使用 TypeScript 和 Express, View 不会呈现。相反,显示服务器文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45311775/