javascript - 为什么express,get的res.sendFile返回的是html纯文本?

查看:253
本文介绍了javascript - 为什么express,get的res.sendFile返回的是html纯文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

let express = require('express');
let db = require('./db/db');
let app = express();

app.all('*', function (req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
  res.header("X-Powered-By", ' 3.2.1')
  res.header("Content-Type", "application/json;charset=utf-8");
  next();
});

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
});

let apiRoutes = express.Router();

apiRoutes.get('/seller', function (req, res) {
  db.find(req.query.id, function (err, result) {
    if (err) {
      console.log('Error:' + err);
      return;
    } else {
      let seller = result[0].toObject();
      delete seller.goods;
      delete seller.ratings;

      res.json({
        errno: 0,
        data: seller
      });
    }
  });
});

apiRoutes.get('/goods', function (req, res) {
  db.find(req.query.id, function (err, result) {
    if (err) {
      console.log('Error:' + err);
      return;
    } else {
      res.json({
        errno: 0,
        data: result[0].toObject().goods
      });
    }
  });
});

apiRoutes.get('/ratings', function (req, res) {
  db.find(req.query.id, function (err, result) {
    if (err) {
      console.log('Error:' + err);
      return;
    } else {
      res.json({
        errno: 0,
        data: result[0].toObject().ratings
      });
    }
  });
});

app.use('/api', apiRoutes);

app.listen(3000);
console.log('Listening on port 3000...');

为什么


app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
});

返回的是html纯文本而不是文件?

但是

var express = require('express');
var bodyParser = require('body-parser');
var db = require('./validate');

var app = express();
app.use(bodyParser.urlencoded({ extended: true }));

// respond with "hello world" when a GET request is made to the homepage
app.get('/', (req, res) => {
    res.sendFile(__dirname + '/index.html');
});

app.post('/dosomething', (req, res) => {
    var message = req.body;
    db.create(message.name, message.age, message.city, function (err, mes) {
        if (err) {
            throw err;
        } else {
            console.log(mes);
        }
    });
})

app.listen(1212);
console.log('is ok ...');

就能正常显示网页?

解决方案

第一个你设置了header
res.header("Content-Type", "application/json;charset=utf-8");
浏览器就会按照json解析

第二个,没设置,默认就是
Content-Type:text/html; charset=utf-8
自然就按照 html解析

这篇关于javascript - 为什么express,get的res.sendFile返回的是html纯文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆