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

Сервер grunt не может быть подключен <gruntjs>

module.exports = function(grunt) {

  // Project configuration.
    grunt.initConfig({
      server: {
        port: 8888,
        base: '.'
      }
    });

};

C:\Program Files\nodejs\test\grunt>
C:\Program Files\nodejs\test\grunt>grunt server
Running "server" task
Starting static web server on port 8888.

Готово без ошибок.

но не может быть подключен через вход [http://127.0.0.1:8888][1] in browsers ! jiong~

Как решить эту проблему в Windows или Unix?

4b9b3361

Ответ 1

В grunt 0,4 в сочетании с grunt-contrib-connect вы можете запустить длинный сервер с помощью аргумента keepalive: grunt connect:target:keepalive или define это как вариант в вашей конфигурации:

grunt.initConfig({
  connect: {
        target:{
            options: {
                port: 9001,
                keepalive: true
            }
        }
    }
});

Ответ 2

Не используйте grunt для обслуживания вашего проекта. Grunt - инструмент построения. Вместо этого используйте сценарии жизненного цикла npm.

server.js

var express = require("express"),
    app = express();
app.use('/', express.static(__dirname));
app.listen(8888);

package.json

{
    "name": "my-project",
    "scripts": {
        "start": "node server.js"
    },
    "dependencies": {
        "express": "3"
    }
}

Теперь вы можете запустить npm start, и жизнь будет большой. Grunt - это инструмент построения, а не сервер. npm - это менеджер жизненного цикла пакета, а не инструмент сборки. Express - это серверная библиотека. Используйте их в нужном месте.

Последующие действия (2013-08-15)

Исключение из этого правила заключается в том, когда вам нужно обслуживать ваш проект другими инструментами тестирования в вашем стеке сборки. Плагин grunt-contrib-connect разработан специально с учетом этого варианта использования и имеет параметр конфигурации keepalive, который оставит открытым во время работы с вашими статическими файлами. Обычно это используется в сочетании с задачей watch, которая запускает набор тестов, когда либо тесты, либо код меняются.

Ответ 3

Задача server выполняется только до тех пор, пока она необходима, но вы можете оставить ее в стороне. Из комментария от виджета по другому вопросу: в вашем файле grunt.js задайте задачу с именем run который выполняет задачи server и watch.

grunt.registerTask("run", "server watch");

Задача watch выполняется бесконечно, поэтому она предотвращает завершение задачи server. Просто убедитесь, что у вас также есть конфиг для задачи watch. Здесь все это в файле grunt.js:

module.exports = function (grunt) {
  // …
  grunt.initConfig({
    // …
    watch: {
      files: "<config:lint.files>",
      tasks: "lint qunit",
    },
    // …
  });

  grunt.registerTask("run", "server watch");
};

Из командной строки просто введите:

$ grunt run

Сервер не будет работать.

В качестве альтернативы, как указывает @NateBarr, из командной строки вы можете запустить:

$ grunt server watch

Ответ 4

По умолчанию Grunt запускает сервер только для тестирования (или любой другой заданной задачи..), и как только он завершается, он выходит из строя.

Но, к счастью, я нашел решение, которое добавляет к вашему файлу grunt.js позволит вам (необязательно) остановить запуск сервера.

grunt.registerTask('wait', 'Wait for a set amount of time.', function(delay) {
   var d = delay ? delay + ' second' + (delay === '1' ? '' : 's') : 'forever';
   grunt.log.write('Waiting ' + d + '...');
   // Make this task asynchronous. Grunt will not continue processing
   // subsequent tasks until done() is called.
   var done = this.async();
  // If a delay was specified, call done() after that many seconds.
   if (delay) { setTimeout(done, delay * 1000); }
});

Затем в вашей командной строке вызовите его: grunt server wait, тогда вы сможете увидеть его в браузере.

Убедитесь, что вы добавили его внутри module.exports = function(grunt){...}