1

$ grunt connect:development:keepalive

エラー:

「connect:development:keepalive」(接続) タスクの実行

警告: undefined は関数ではありません --force を使用して続行してください。

警告のため中止されました。

私は現在、 Professional AngularJS (wrox)AngularJSという本から学んでおり、本からの基本的なコードは次のとおりです。

app/index.html

<!DOCTYPE HTML>
<html ng-app="Workflow">
    <head>
        <title>Chapter Two</title>
        <link rel="stylesheet" href="main.css" />
    </head>
    <body ng-controller="ToolsCtrl">
        <h1>Workflow tools from this chapter:</h1>
        <ul>
            <li ng-repeat="tool in tools">{{tool}}</li>
        </ul>

        <script src="bower_components/angular/angular.js"></script>
        <script src="app.js"></script>
    </body>
</html>

app/main.less

html,
body {
  h1 {
    color: steelblue;
  }

app/app.js

'use strict';

angular.module('Workflow', [])
.controller('ToolsCtrl', function($scope) {
        $scope.tools = [
            'Bower',
            'Grunt',
            'Yeoman'
        ];
    });

Gruntfile.js

module.exports = function(grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),

        connect: {
            options: {
                port: 9000,
                open: true,
                livereload: 35729,
                hostname: 'localhost'
            },

            development: {
                options: {
                    middleware: function(connect) {
                        return [
                            connect.static('app')
                        ];
                    }
                }
            }
        },

        less: {
            development: {
                files: {
                    'app/main.css': 'app/main.less'
                }
            }
        }
    });

    require('load-grunt-tasks')(grunt);

    grunt.registerTask('default', []);
};

.bowerrc

{
  "directory": "app/bower_components"
}

これらはすべて、このアプリケーション用に本で提供されているコードです。また、本に書かれているように、ターミナルからルート フォルダーで次のコマンドを実行しました。

sudo npm install -g bower

sudo npm install -g grunt-cli

sudo npm install --save-dev grunt

sudo npm install --save-dev load-grunt-tasks

sudo npm install --save-dev grunt-contrib-connect

sudo npm install --save-dev grunt-contrib-jshint

sudo npm install --save-dev grunt-contrib-less

sudo npm install --save-dev grunt-contrib-watch

sudo npm install -g less

lessc app/main.less > app/main.css

grunt less

sudoそうしないとエラーがスローされたため、使用する必要がありました:

root/管理者としてこのコマンドを再度実行してください。

この本によるとgrunt connect:development:keepalive、端末から実行すると、アプリケーションが実行された状態でブラウザが起動するはずです。しかし、上記のようにエラーが発生します。

何が悪いのかわからないので、状況を教えてください。これが、すべてのコードを含めた理由です。私はこれらのツールやテクノロジーに非常に慣れていないため、この本に従って AngularJS を学習する必要があるかどうかさえわかりません。

ありがとうございました。

編集:

WebStorm IDE を使用しているためGruntfile.js、行内に問題が表示されconnect.static('app')ます。Unresolved function or method static()マウスを乗せるとこう言います。

4

1 に答える 1

3

問題が Gruntfile.js の connect.static('app') 行にあるのは正しいことです

本の Web サイトのフォーラムによると、「static」は Connect モジュールの一部ではなくなり、npm install serve-static を実行する必要があります。その後、 Gruntfile.js の grunt.intConfig 行の上に変数を宣言します...

var serveStatic = require('serve-static');

次に、ミドルウェア関数を次のように変更します

middleware: function(connect) {
            return [
              serveStatic('app')

お役に立てれば。それは私がそれを解決するのを助けました

于 2016-03-09T18:30:17.757 に答える