Чтение HTML в Node.js

0

Я пытаюсь запустить страницу index.html с nodejs, но по какой-то причине я продолжаю получать ошибку приложения после того, как я нажимаю ее на Heroku. Любая идея, что я ошибаюсь с моим кодом?

 #/!/usr/bin/env node

 var express = require('express');

 var app = express.createServer(express.logger());

 app.get('/', function(request, response) {
     var fs = require('fs');
     var buffer = new Buffer();
     response.send(buffer.toString('utc-8', fs.readFileSync("index.html")));
 });

 var port = process.env.PORT || 5000;
 app.listen(port, function() {
 console.log("Listening on " + port);
 });
Теги:

2 ответа

2
Лучший ответ

При использовании fs.readFileSync() без указания каких-либо options возвращаемое значение уже будет Buffer, поэтому вам не нужно создавать другое.

Buffer.isBuffer(fs.readFileSync('index.html'));            // true
typeof fs.readFileSync('index.html', 'utf8') === 'string'; // true

И, res.send() может обрабатывать res.send() Buffer. Так или иначе, он фактически преобразует String в Buffer.

var fs = require('fs');
response.send(fs.readFileSync('index.html'));

Вы также можете установить Content-Type чтобы браузер знал его HTML:

var fs = require('fs');
response.setHeader('Content-Type', 'text/html');
response.send(fs.readFileSync('index.html'));

Или вы также можете использовать Express ' res.sendfile(), который будет управлять обеими частями для вас:

app.get('/', function (request, response) {
    response.sendfile('index.html');
});

Хотя, если ошибка, которую вы получаете, упоминает ENOENT, вам может понадобиться привязать путь.

fs будут относиться к текущему рабочему каталогу, что может и не быть тем, что вы ожидаете.

response.sendfile(__dirname + '/index.html');
  • 0
    Это отличная информация и была очень полезной! Я не смог понять, что именно не так - я перепробовал все, что вы упомянули несколько раз, и это продолжало выдавать ошибку. Затем я попытался вернуться к выполнению response.send («Hello World!»), И оно все равно выдало ошибку. Поэтому я только что создал новый каталог / приложение, и оно работает !!!
1

buffer.toString('utc-8',... - typo, должен быть utf-8. Но подумайте, что Jonathans все равно ответит.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню