每当我尝试使用grunt watch的live reload选项时,我都会遇到这个问题。
无论我使用哪个端口,我都会不断收到“致命错误:端口xxxx已被另一个进程使用。”
我列出了所有正在使用的端口,并且选择一个没有出现在列表中的随机数也无济于事:它将xxxx替换为gruntfile中最后使用的端口。

我的gruntfile本身:

module.exports = function (grunt) {

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),

    watch: {

        options: {
            livereload: true
        },

        js: {
            files: ['.dev/**/*.js'],
            tasks: ['concat', 'uglify', 'watch'],
        },
        scss: {
            files: ['./dev/scss/*.scss'],
            tasks: ['sass', 'concat', 'watch'],
            options: {
                reload: true,
                livereload: false,

            }
        },
        html: {
            files: ['./dev/**/*.html', 'watch'],
            tasks: ['copy', 'watch'],
        },
        grunt: {
            files: ['Gruntfile.js'],
            tasks: ['watch'],
        },
    },

    concat: {
        js: {
            src: ['dev/js/script1.js', 'dev/js/script2.js'],
            dest: 'dev/js/script.js',
        },
        css: {
            src: ['./dev/css/nav.css', './dev/css/anim.css', './dev/css/style.css'],
            dest: './dist/css/style.css',
        },
    },

    uglify: {
        build: {
            src: 'dev/js/script.js',
            dest: 'dist/js/script.min.js'
        }
    },

    sass: {                              // Task
        dev: {                            // Target
            files: {                         // Dictionary of files
                './dev/css/style.css': './dev/scss/style.scss',       // 'destination': 'source'
            },
            tasks: ['copy'],
        }
    },

    copy: {
        main: {
            expand: true,
            cwd: './dev/html',
            src: '*.html',
            dest: './dist/html/'
        },
    },
});

// Load the plugin that provides the "uglify" task.
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-sass');


// Default task(s).
grunt.registerTask('default', ['concat', 'uglify', 'sass', 'copy', 'watch']);

};


我对npm,grunt等仍然不熟悉,并且也使用Yeoman遇到了这个问题。
是否有一些应用程序可以自动侦听每个端口(我正在使用Webstorm)?
但是,当我关闭它并使用sublime和一个终端时,它一直说每个随机端口都已经在使用中

最佳答案

看起来您正在递归地调用watch ..

以gruntfile的这一部分为例:

watch: { // hey grunt, you now know of a task called 'watch'
    ....
    html: {
        files: ['./dev/**/*.html', 'watch'], // here are the files to watch
        tasks: ['copy', 'watch'], // and oh, hey, when you run watch, make
                                  // sure to run watch again, recursively, forever
    }


我认为您可以看到进展情况。您的端口正在使用,因为您的监视任务在尝试再次运行时已经在运行。您无需在手表的每个子部分上将“手表”注册为任务。希望有帮助:)

关于node.js - 咕unt声:Livereload不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37361853/

10-13 03:09