javascript - 使用 TypeScript 和 Express, View 不会呈现。相反,显示服务器文件

标签 javascript node.js express typescript httpserver

我正在尝试使用 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 时,我看到了下图。

showing server files instead of rendering

在处理代码时,我可以执行 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/

相关文章:

javascript - Node.js 中的变量作用域

node.js - Node (或其他语言)中基于网络的应用程序是否有 'middleware' 库?

javascript - 无法从 Mongoose-Node 检索对象

javascript - 在 Express.js 中,为什么 res.json() 之后的代码仍然执行?

express - NGINX server_name 不工作 2

javascript - 检查商店是否营业。 MySQL Node.js 业务逻辑

javascript - 计算选中复选框的文本输入的值

javascript - Jquery 数据表搜索

javascript - 尝试更新 LokiJS db 但出现 'Trying to update unsynced document' 错误

javascript - 使用 grunt-shell 和 grunt-ssh 运行的 Grunt 同步任务