29

私は YO lessapp プロジェクトを使用しています。「grunt-contrib-connect」は、9000 ポートでノード js サーバーを起動するのに役立ちます。grunt serve を実行する (サーバーを起動する) たびに、以下の警告のためにサービスが中止されます。

Running "connect:livereload" (connect) task
Warning: connect.static is not a function Use --force to continue.

正確なエラーは、Gruntfile.js の以下の関数で発生しました。

 livereload: {
        options: {
          middleware: function(connect) {
            return [
              connect.static('.tmp'),
              connect().use('/bower_components', connect.static('./bower_components')),
              connect.static(config.app)
            ];
          }
        }
      }, 

私はインストール しましnpm install grunt-contrib-connect --save-devた、 npm install serve-static --save-dev

いくつかの投稿に出くわしました.ファイアウォールをオフにすることを提案する人もいますが、うまくいきません.

他のマシンから同じアプリを実行しようとしたところ、正常に動作したため、自分のマシンまたは npm/node/connect のバージョンの競合に関係があることはわかっています。

システム構成 :

  • ウィンドウズ 7 プロフェッショナル
  • ノード -v4.1.2
  • npm -v2.14.4
  • connect@3.4.0

投稿nodejs connect cannot find staticに基づいて connect と serve-static をインストールしましたが、それでも同じです

何か助けはありますか?前もって感謝します

4

2 に答える 2

69

インストールする必要がconnectありserve-staticます:

npm install --save-dev grunt-contrib-connect serve-static 

そして、インポートする必要がありserve-staticますGruntfile.js

module.exports = function (grunt) {
  ...
  var serveStatic = require('serve-static');

  grunt.initConfig({
  ...
    connect: {
    ...
      livereload: {
        options: {
          middleware: function(connect) {
            return [
              serveStatic('.tmp'),
              connect().use('/bower_components', serveStatic('./bower_components')),
              serveStatic(config.app)
            ];
          }
        }
      }
于 2015-10-13T22:01:46.610 に答える
25

バージョン 0.11.x から、新しいは と をサポートしgrunt-contrib-connectません。(静的ファイルを提供する場合) および(特定のパスのディレクトリ リストを含むページを提供する場合) をインストールする必要があります。connect.staticconnect.directory
serve-staticserve-index

このような:
var serveStatic = require('serve-static');
var serveIndex = require('serve-index');

代わり に使うserveStatic_connect.static

serveIndexconnect.directory

grunt.initConfig({
    connect: {
        options: {
            test: {
               directory: 'somePath',
               middleware: function(connect, options){
                    var _staticPath = path.resolve(options.directory);
                    return [serveStatic(_staticPath), serveIndex(_staticPath)]
               }
            }
        }
    }
})
于 2015-12-21T07:36:56.297 に答える