0

私は他の誰かによって構築された webapp に取り組んでいます...構築して実行するコマンドは

npm install
bower install
grunt serve

以前は問題なく npm と bower を使用していましたが、エラー メッセージが表示されずにコマンド ラインがハングするだけで、grunt が「connect:livereload」タスクに到達するまで、すべてが機能しているように見えます。

以下は、package.json ファイルと grunt serve -v からの出力です。

  (package.json)
   {
  "name": "app",
  "version": "0.0.1",
  "dependencies": {
    "openlayers": "^3.14.2"
  },
  "devDependencies": {
    "connect-livereload": "^0.5.3",
    "grunt": "^0.4.5",
    "grunt-bower-requirejs": "^2.0.0",
    "grunt-browserify": "^4.0.1",
    "grunt-connect-proxy": "^0.2.0",
    "grunt-contrib-clean": "^0.6.0",
    "grunt-contrib-connect": "^0.10.1",
    "grunt-contrib-copy": "^0.8.0",
    "grunt-contrib-cssmin": "^0.12.3",
    "grunt-contrib-handlebars": "^0.10.2",
    "grunt-contrib-imagemin": "^0.9.4",
    "grunt-contrib-jshint": "^0.11.2",
    "grunt-contrib-less": "^1.2.0",
    "grunt-contrib-watch": "^0.6.1",
    "grunt-jsbeautifier": "^0.2.10",
    "grunt-jscs": "^1.8.0",
    "grunt-jsdoc": "^0.6.7",
    "grunt-karma": "^0.11.0",
    "grunt-open": "^0.2.3",
    "grunt-processhtml": "^0.3.8",
    "grunt-requirejs": "^0.4.2",
    "grunt-usemin": "^3.0.0",
    "jit-grunt": "^0.9.1",
    "jscs": "^1.13.1",
    "jscs-stylish": "^0.3.1",
    "jsdoc": "^3.3.2",
    "jshint-stylish": "^2.0.0",
    "karma": "^0.13.0",
    "karma-chai": "^0.1.0",
    "karma-chai-sinon": "^0.1.5",
    "karma-chrome-launcher": "^0.1.12",
    "karma-coverage": "^0.4.2",
    "karma-firefox-launcher": "^0.1.6",
    "karma-ie-launcher": "^0.2.0",
    "karma-jasmine": "^0.3.6",
    "karma-phantomjs-launcher": "^0.2.0",
    "karma-requirejs": "^0.2.2",
    "mocha-xunit-zh": "0.0.3",
    "phantomjs": "^1.9.17",
    "requirejs": "^2.1.18",
    "time-grunt": "^1.2.1"
  },
  "engines": {
    "node": ">=0.12.0"
  }
}

(verbose) 出力 (live:reload で開始)

Running "connect:livereload" (connect) task
Verifying property connect.livereload exists in config...OK
File: [no files]
Options: protocol="http", port=9001, hostname="0.0.0.0", base=".", directory=nul
l, keepalive=false, debug=false, livereload=false, open=false, useAvailablePort=
false, onCreateServer=null, middleware=undefined

「grunt serve」を実行した後の(詳細ではない)出力は次のとおりです。

$ grunt serve
Running "serve" task

Running "clean:server" (clean) task
>> 1 path cleaned.

Running "jshint:all" (jshint) task

√ No problems


Running "jscs:src" (jscs) task
No code style errors found.
>> 21 files without code style errors.

Running "createDefaultTemplate" task

Running "handlebars:compile" (handlebars) task
>> 1 file created.

Running "clean:dist" (clean) task
>> 1 path cleaned.

Running "createDefaultTemplate" task

Running "handlebars:compile" (handlebars) task
>> 1 file created.

Running "less:dist" (less) task
>> 1 stylesheet created.

Running "copy:env" (copy) task
Copied 1 file

Running "copy:ol" (copy) task
Copied 2 files

Running "configureProxies" task
Proxy created for: /api to 52.20.39.250:80

Running "connect:livereload" (connect) task

ここでスタックします(「「接続:livereload」(接続)タスクを実行中」)...カーソルもエラーもそれ以上の出力もありません....ここで、「http://でWebサーバーの接続を開始しましたlocalhost:9001 "とアプリを表示できますが、代わりにここでハングし、強制終了するまでそれ以上の出力やエラーは発生しません. そのポートには何も提供されません(アプリの grunt-task/config/connect ファイルでテストとしてポート番号を切り替えてみましたが、変更はありません)

Gruntfile は次のとおりです。

'use strict';

module.exports = function (grunt) {
    // show elapsed time at the end
    require('time-grunt')(grunt);
    // load all grunt tasks
    require('jit-grunt')(grunt, {
        useminPrepare: 'grunt-usemin',
        configureProxies: 'grunt-connect-proxy'
    });

    var yeomanConfig = {
        app: 'app',
        dist: 'dist'
    };

    grunt.initConfig({yeoman: yeomanConfig});

    //load all custom task configs
    grunt.loadTasks('grunt-tasks/config');
    grunt.loadTasks('grunt-tasks/register');

    grunt.registerTask('default', [
        'jshint',
        'jscs',
        //'test',
        'build'
    ]);

};

grunt-tasks/config の「接続」ファイルは次のとおりです。

    module.exports = function(grunt) {

    var SERVER_PORT = 9001;
    var LIVERELOAD_PORT = 35729;

    var lrSnippet = require('connect-livereload')({
        port: LIVERELOAD_PORT
    });

    var proxySnippet = require('grunt-connect-proxy/lib/utils').proxyRequest;

    var mountFolder = function (connect, dir) {
        return connect.static(require('path').resolve(dir));
    };

    // configurable paths
    var yeomanConfig = {
        app: 'app',
        dist: 'dist'
    };

    grunt.config('connect', {
        options: {
            port: grunt.option('port') || SERVER_PORT,
            hostname: '0.0.0.0'
        },
        proxies: [{
            context: ['/api'],
            host: 'HOST IP',
            port: 80
        }],
        livereload: {
            options: {
                middleware: function (connect) {
                    return [
                        proxySnippet,
                        lrSnippet,
                        mountFolder(connect, '.tmp'),
                        connect().use(
                          '/node_modules',
                          connect.static('./node_modules')
                        ),
                        mountFolder(connect, yeomanConfig.app)
                    ];
                }
            }
        },
        test: {
            options: {
                middleware: function (connect) {
                    return [
                        lrSnippet,
                        mountFolder(connect, '.tmp'),
                        mountFolder(connect, 'test'),
                        mountFolder(connect, yeomanConfig.app)
                    ];
                }
            }
        },
        testInBrowser: {
            options: {
                middleware: function (connect) {
                    return [
                        proxySnippet,
                        mountFolder(connect, '.tmp'),
                        mountFolder(connect, 'test'),
                        mountFolder(connect, yeomanConfig.app)
                    ];
                }
            }
        },
        dist: {
            options: {
                middleware: function (connect) {
                    return [
                        proxySnippet,
                        connect().use(
                          '/node_modules',
                          connect.static('./node_modules')
                        ),
                        mountFolder(connect, yeomanConfig.dist)
                    ];
                }
            }
        }
    });
}

私が気づいたことの 1 つ: このプロジェクトの lder の webapp では、npm のバージョンは 2.14.20 ですが、ユーザー フォルダーでは npm のバージョンは 3.8.3 です (両方のディレクトリで、Node のバージョンは同じで、4.4 です)。 .1) .. これがこの問題の原因でしょうか? webapp ディレクトリで npm install npm -g を実行しましたが、そのディレクトリから表示したときにバージョンは変更されませんでした。

4

0 に答える 0