我尝试使用TypeScript创建一个webapp。我有我的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.
});
您怎么看?
答案 0 :(得分:1)
您尚未将快递实例用作服务器。
你需要这样做
http.createServer(app).listen(app.get('port'));
或者
app.listen(app.get('port'))
基本上你没有任何处理程序就调用了你的服务器,所以它显示了你的主脚本目录。
您已创建快速实例,但未添加到http
服务器。
答案 1 :(得分:0)
您尝试加载的视图目录需要是完整路径,而不是相对路径。尝试:
app.set('views', path.join(__dirname, 'views'));