nodejs bağlantısı statik bulamıyor


118

NOT: Burada verilen diğer çözümü denedim ama işe yaramadı

NodeJ'lere sahip bir acemi. AngularJS pro'yu takip etmeye çalışıyorum ve NodeJs sunucusunu kurarken takılı kaldım. Kitaba göre nodejs kurdum ve ardından npm install connect kullanarak connect paketini kurdum

daha sonra nodejs klasörünün yanındaki klasöre indirilen angularj'ler. Daha sonra sunucuya bağlanmak için server.js dosyasını yazdı. İşte dosyanın içeriği:

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

Bu server.js dosyasını kullanarak çalıştırdığımda:

node server.js

Aşağıdaki hatayı alıyorum:

 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

Herhangi bir fikir çocuklar? Teşekkürler.

Yanıtlar:


219

Connect paketi, kod tabanının en son 3.x sürümünde bazı değişiklikler yaparak staticara yazılımı kendi paketine taşıdı. Buraya taşınan paketlerin listesini görüntüleyebilirsiniz .

Yani iki seçeneğiniz var:

Seçenek 1
Daha eski bir 2.x connect sürümünü yükleyebilir ve olduğu gibi kullanabilirsiniz:

$ npm install connect@2.XX

En son 2.XX sürümünü yüklemek, mevcut uygulamanızın düzgün çalışmasına izin verecektir.

Seçenek 2
connect'in 3.x sürümünü kullanmaya devam edebilir ve ayrıca serve-staticşunları ekleyebilirsiniz :

$ npm yükleme sunma-statik

server.jsYeni serve-staticmodülü eklemek için dosyanızı güncellemeniz de gerekir :

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

var app = connect();

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

5
aynı klasör durumunda tek nokta kullanarak benim için çalıştı, yani ./angularjs
coure2011

@ coure2011 Bu, pwddüğümü ne zaman başlattığınıza bağlıdır . node server.jsBaşlangıçta iki nokta kullanmak doğrudur /angularjs(muhtemelen pwd'nizdir /angularjs/..)
Michael

Bunu denedim, şimdi tarayıcıda "alınamıyor /" hatası alıyorum
Ans Bilal

@AnsBilal "localhost: 5000 / test.html" yi deneyin. Kitapta (OP'de başvurulan) örneği izlediğinizi varsayarsak, URL sizin için çalışmalıdır.
akvallejos

evet kitaptan bir örnek deniyordum (Adam Freeman'dan Pro AngularJs). Bit aramanın ardından çözüme geldim ve bunu blogumda
Ans Bilal

8

Dylants'ın cevabı yardımcı olur. Ancak, aynı hatayı çözmek için izlediğim adımların tamamı burada. 1. Komut penceresinden, dizini nodeJS'yi kurduğunuz dizine değiştirin. 2. Npm install connect çalıştırdıktan sonra, şunu çalıştırın:

npm install serve-static

3. Aşağıdaki kodla server.js adlı bir dosya oluşturun:

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

var app = connect();

app.use(serveStatic("./angularjs"));
app.listen(5000);
  1. Hala komut penceresindeyken ve hala nodeJS'yi kurduğunuz dizindeyken şunu çalıştırın:

    düğüm server.js

  2. Http: // localhost: 5000 / test.html URL'sine gidin

Bu çalışmalı. İşte dizin yapılandırmam: C: \ NodeJSInstallLocation \ angularjs



1

Bunun gibi bir şey denemek isteyebilirsin

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

0

Bunu dene...

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

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

Lütfen kodun ne yaptığı hakkında biraz açıklama ekleyin
elcortegano
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.