无法使用express解析GET请求

时间:2017-03-31 19:52:25

标签: node.js express get httprequest static-files

我读了很多关于node,express和许多有用的模块。 我试图解析GET HTTP请求,但我做错了。

也许使用express.Router()views engine可以解决此问题,但我想知道为什么此代码无效?

  

服务器启动并运行!公共文件服务非常好但是我无法解析GET请求。

app.use(express.static(path.join(__dirname, 'public')));

/*I would like to get req.session here*/
app.get('/', function (req, res, next) {
    console.log('I'm trying to log this string');
})

我还使用 morgan 来记录所有HTTP请求,这是输出:

Listening at: http://localhost:8080
GET / 200 14.288 ms - 9139
GET /css/materialize.css 304 16.311 ms - -
GET /css/style.css 304 24.775 ms - -
GET /js/materialize.js 304 21.287 ms - -
GET /js/init.js 304 20.238 ms - -
GET /js/index.js 200 51.159 ms - 2719
GET /fonts/roboto/Roboto-Regular.woff2 304 2.419 ms - -
GET /fonts/roboto/Roboto-Medium.woff2 304 3.663 ms - -
GET /fonts/roboto/Roboto-Light.woff2 304 7.958 ms - -
GET /fonts/roboto/Roboto-Bold.woff2 304 9.010 ms - -
  

有效评论:

//app.use(express.static(path.join(__dirname, 'public')));

但是,很明显,没有提供任何文件。

谢谢!

PS:我从未见过解释上述情况的教程或代码片段。

2 个答案:

答案 0 :(得分:1)

我猜你在index.html目录中有一个名为public/的文件,该文件是在请求/时将被提供的文件,因为那是{{1}默认情况下会这样做。

您可以禁用该行为,因此请求将传递给您的express.static()处理程序:

/

记录在案here

或者,您可以通过在静态中间件之前声明它来确保请求命中app.use(express.static(path.join(__dirname, 'public'), { index : false })); 处理程序:

/

答案 1 :(得分:0)

感谢@robertklep,我解决了这个问题:

//app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import {MenuModule} from 'primeng/primeng';



import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    MenuModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }