Подтвердить что ты не робот

"Невозможно 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/

Что я делаю неправильно и как я могу это исправить?

4b9b3361

Ответ 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 и подключите статические документы промежуточного программного обеспечения для получения дополнительной информации.