2015-08-17 2 views
0

У меня есть следующий server.js файл:Ошибка до угловых сервер

var express = require('express'), 
    api  = require('./api'), 
    app  = express(); 

app 
    .use(express.static('./public')) 
    .use('./api', api) 
    .get('*', function (req, res) { 
     res.sendfile('public/main.html'); 
    }) 
    .listen(3000); 

и файл server.js находится в C: \ Users \ Myname \ Desktop \ prodfixes \ server.js и основной. html находится в папке C: \ Users \ myName \ Desktop \ prodfixes \ public \ main.html , и переход на http://localhost:3000/ не вызывает ошибки на экране, однако в командной строке (я использую nodemon server.js для запуска сервера) Я получаю сообщение об ошибке: express deprecated res.sendfile: вместо этого используйте res.sendFile. И тогда я, очевидно, изменил res.sendfile к res.sendFile, но затем я получаю сообщение об ошибке, когда я обновить экран:

TypeError: path must be absolute or specify root to res.sendFile at ServerResponse.sendFile (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\response.js:394:11) at C:\Users\myName\Desktop\prodfixes\server.js:9:7 at Layer.handle [as handle_request] (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\route.js:131:13) at Route.dispatch (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request] (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\layer.js:95:5) at C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\index.js:277:22 at param (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\index.js:349:14) at param (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\index.js:365:14) at Function.process_params (C:\Users\myName\Desktop\prodfixes\node_modules\express\lib\router\index.js:410:3)

К сожалению я новичок в угловом и с использованием серверов, так что любая помощь будет принята с благодарностью. Благодарю.

+0

Ошибка звучит так, будто вы используете неправильный путь. Убедитесь, что это правильно. Попробуйте различные потенциальные пути, пока не найдете какой-то ресурс. Вы прочитали документацию для sendFile? Для этого может потребоваться другой путь, чем тот, который вы использовали раньше. –

ответ

0

Я согласен с С. Будой ... определенно кажется, что у вас неправильный путь. Ошибка указывает «ТипError: путь должен быть абсолютным или указать root для res.sendFile в ServerResponse.sendFile» - попробуйте использовать полный путь вместо относительного пути. C: \ Users \ myName \ Desktop \ prodfixes \ public \ main.html, а не просто public/main.html.

1

Использование path.resolve должны решить эту проблему в кросс-платформенной совместимым способом:

var express = require('express'), 
    path = require('path'), 
    api = require('./api'), 
    app = express(); 

app 
    .use(express.static('./public')) 
    .use('./api', api) 
    .get('*', function (req, res) { 
     res.sendFile(path.resolve('public/main.html')); 
    }) 
    .listen(3000); 

path.resolve обеспечит абсолютный путь к файлу, который будет удовлетворять требованиям к res.sendFile() функции:

Unless the root option is set in the options object, path must be an absolute path of the file.

http://expressjs.com/api.html

Смежные вопросы