nodejs接続は静的を見つけることができません


118

注:ここに記載されている他の解決策を試しましたが、うまくいきませんでした

NodeJを持つ初心者。AngularJSプロをフォローしようとしていますが、NodeJsサーバーのセットアップに行き詰まりました。本によると、nodejsをインストールしてから、npm install connectを使用して接続パッケージをインストールしました

次に、nodejsフォルダの隣のフォルダにangularjsをダウンロードしました。次に、server.jsファイルを書き込んでサーバーに接続します。ファイルの内容は次のとおりです。

    var connect = require('connect');
connect.createServer(connect.static("../angularjs")).listen( 5000);

このserver.jsファイルを実行すると:

node server.js

次のエラーが発生します。

 function app(req, res, next){ app.handle(req, res, next); }
 merge(app, proto);
 merge(app, EventEmitter.prototype);
 app.route = '/';
 app.stack = [];
 return app;
 has no method 'static'
   at Object.<anonymous> (C:\web\nodejs\server.js:2:36)
   at Module._compile (module.js:456:26)
   at Object.Module._extensions..js (module.js:474:10)
   at Module.load (module.js:356:32)
   at Function.Module._load (module.js:312:12)
   at Function.Module.runMain (module.js:497:10)
   at startup (node.js:119:16)
   at node.js:906:3

アイデアは?ありがとう。

回答:


219

接続パッケージは、コードベースの最新の3.xバージョンにいくつかの変更を加え、staticミドルウェアを独自のパッケージに移動しました。 ここに移動したパッケージのリストを表示できます

したがって、2つのオプションがあります。

オプション1
古いバージョンの2.xバージョンの接続をインストールして、そのまま使用できます。

$ npm install connect@2.XX

最新の2.XXバージョンをインストールすると、現在の実装が正しく機能するようになります。

オプション2
3.xバージョンの接続を継続して使用し、さらに以下を追加できserve-staticます。

$ npm install serve-static

またserver.js、新しいserve-staticモジュールを含めるようにファイルを更新する必要があります。

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

var app = connect();

app.use(serveStatic("../angularjs"));
app.listen(5000);

5
同じフォルダー、つまり./angularjsの場合は単一のドットを使用して私のために働きました
coure2011

@ coure2011これはすべて、pwdノードをいつ起動するかに依存します。(おそらくあなたのパスワードはである)node server.jsから開始するときに実行するときに2つのドットを使用することは正しい/angularjs/angularjs/..
Michael

私はこれを試しました、今、私はブラウザでエラーを得ることができます "cannot get /"
Ans Bilal

@AnsBilalは "localhost:5000 / test.html"を試してください。この本の例(OPで参照)に従っているとすると、URLが機能するはずです。
akvallejos

はい、私は本(Adam FreemanによるPro AngularJs)の例を試していました。ビット点灯して検索した後、私は解決策に来て、私はまた、他の人のための私のブログにそれを投稿:anscoding.blogspot.com/2017/11/...
アンスビラル

8

dylantsによる回答が役立ちます。ただし、同じエラーを解決するために私が従った正確な手順は次のとおりです。1.コマンドウィンドウで、nodeJSをインストールしたディレクトリに移動します。2.すでにnpm install connectを実行した後、次を実行します。

npm install serve-static

3.次のコードを使用して、server.jsという名前のファイルを作成します。

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

var app = connect();

app.use(serveStatic("./angularjs"));
app.listen(5000);
  1. まだコマンドウィンドウで、nodeJSをインストールしたディレクトリで、次のコマンドを実行します。

    ノードserver.js

  2. URL http:// localhost:5000 / test.htmlに移動します

これはうまくいくはずです。これが私のディレクトリ構成です:C:\ NodeJSInstallLocation \ angularjs



1

あなたはこのようなものを試してみたいかもしれません

var express = require('express');
var app = express();
app.use(express.static('angularjs'));

0

これを試して...

  const express = require('express');
  const app = express();
  const path = require('path');

  app.use('',express.static(path.join(__dirname, '/static/')));

コードの機能に関する説明を追加してください
elcortegano
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.