"Невозможно GET/" с Connect на Node.js
Я пытаюсь начать обслуживать некоторые статические веб-страницы, используя connect
следующим образом:
var connect = require("connect");
var nowjs = require("now");
var io = require("socket.io");
var app = connect.createServer(
connect.static(__dirname + '/public')
);
app.listen(8180);
Итак, я добавил простой index.html
в каталог /public
в том же каталоге, что и файл app.js
, но когда я пытаюсь просмотреть страницу в своем браузере, я получаю этот ответ от node:
Невозможно GET/
Что я делаю неправильно и как я могу это исправить?
Ответы
Ответ 1
Этот код должен работать:
var connect = require("connect");
var app = connect.createServer().use(connect.static(__dirname + '/public'));
app.listen(8180);
Также в режиме connect 2.0.createServer() устарел. Вместо этого используйте connect().
var connect = require("connect");
var app = connect().use(connect.static(__dirname + '/public'));
app.listen(8180);
Ответ 2
Вы можете быть здесь, потому что читаете книгу Apress PRO AngularJS
...
Как описано в комментарии к этому вопросу KnarfaLingus
:
[НАЧАТЬ ЦИТАТ]
Модуль подключения был реорганизован. сделать:
npm install connect
, а также
npm install serve-static
Впоследствии ваш server.js
может быть записан как:
var connect = require('connect');
var serveStatic = require('serve-static');
var app = connect();
app.use(serveStatic('../angularjs'));
app.listen(5000);
[КОНЕЦ ЦИТАТЫ]
Хотя я делаю это, как предлагает книга, более сжатым способом:
var connect = require('connect');
var serveStatic = require('serve-static');
connect().use(
serveStatic("../angularjs")
).listen(5000);
Ответ 3
Вы увидите сообщение Cannot GET /
, если вы не укажете, какую страницу вы пытаетесь получить, другими словами, если ваш URL-адрес похож на http://localhost:8180
. Убедитесь, что вы вводите имя страницы, например. http://localhost:8180/index.html
.
Ответ 4
Была та же проблема. Это было разрешено, как описано выше.
В моем index.js
var port = 1338,
express = require('express'),
app = express().use(express.static(__dirname + '/')),
http = require('http').Server(app),
io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
});
http.listen(port, function(){
console.log("Node server listening on port " + port);
});
и в моем index.html
<!doctype html>
<html>
<head>
<title>
My page
</title>
</head>
<body>
<script src = "lib/socket.io.js"></script>
<script src = "lib/three.js"></script>
<script>
var socket = io();
</script>
</body>
</html>
thes.ths был просто там для тестирования пути. Это позволит установить все дочерние файлы в корневой каталог вашего приложения. Также socket.io.js можно вызвать автоматически с помощью <script src = "/socket.io/socket.io.js">
через некоторую темную магию (поскольку между ними существует физически node_modules и lib-каталог).
Ответ 5
var connect = require('connect');
var serveStatic = require('serve-static');
var app = connect();
app.use(serveStatic('../angularjs'), {default: 'angular.min.js'}); app.listen(3000);
Ответ 6
Вы также можете попробовать st, node модуль для обслуживания статических файлов. Настройка тривиальна.
npm install connect
npm install st
И вот как выглядит мой файл server-dev.js:
var connect = require('connect');
var http = require('http');
var st = require('st');
var app = connect()
.use(st('app/dev'));
http.createServer(app).listen(8000);
или (с отключенным кешем):
var connect = require('connect');
var http = require('http');
var st = require('st');
var app = connect();
var mount = st({
path: 'app/dev',
cache: false
});
http.createServer(function (req, res) {
if (mount(req, res)) return;
}).listen(8000);
app.use(mount);
Ответ 7
Самый простой способ обслуживания статических файлов - использовать "арфу". Это можно найти здесь. Вы можете обслуживать ваши файлы из местоположения, которое вы хотите, через node:
var harp = require("harp")
harp.server(projectPath [,args] [,callback])
Надеюсь, что это поможет.
Ответ 8
Вам может понадобиться restart
процесс, если app.get
not
работает. Нажмите ctl+c
а затем restart node app
.
Ответ 9
Решение "Cannot Get/" обычно можно определить, если выполнить "ng build" в командной строке. Чаще всего вы обнаружите, что один из ваших "импортов" не имеет правильного пути.
Ответ 10
Обычно вы хотите отображать шаблоны следующим образом:
app.get('/', function(req, res){
res.render('index.ejs');
});
Однако вы также можете предоставить статический контент - для этого используйте:
app.use(express.static(__dirname + '/public'));
Теперь все в каталоге /public вашего проекта будет доставлено как статическое содержимое в корень вашего сайта, например. если вы поместите default.htm в общую папку, если они будут доступны, посетив /default.htm
Просмотрите express API и подключите статические документы промежуточного программного обеспечения для получения дополнительной информации.