nodejs connect kann keine statische Aufladung finden


118

HINWEIS: Ich habe eine andere hier angegebene Lösung ausprobiert , aber sie hat nicht funktioniert

Ein Neuling mit NodeJs. Ich versuche, AngularJS Pro zu folgen, und habe mich beim Einrichten des NodeJs-Servers festgefahren. Laut Buch habe ich nodejs installiert und dann das Connect-Paket mit npm install connect installiert

Laden Sie dann anglejs in den Ordner neben dem Ordner nodejs herunter. Dann schrieb server.js Datei, um eine Verbindung zum Server herzustellen. Hier ist der Inhalt der Datei:

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

Wenn ich diese server.js-Datei ausführe mit:

node server.js

Ich erhalte folgenden Fehler:

 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

Irgendwelche Ideen Jungs? Vielen Dank.

Antworten:


219

Das Connect-Paket hat einige Änderungen in der neuesten 3.x-Version seiner Codebasis vorgenommen und die staticMiddleware in ein eigenes Paket verschoben. Hier können Sie die Liste der Pakete anzeigen, die verschoben wurden .

Sie haben also zwei Möglichkeiten:

Option 1
Sie können eine ältere 2.x-Version von connect installieren und diese wie folgt verwenden:

$ npm installiere connect@2.XX

Durch die Installation der neuesten 2.XX-Version funktioniert Ihre aktuelle Implementierung ordnungsgemäß.

Option 2
Sie können die 3.x-Version von connect weiterhin verwenden und außerdem Folgendes hinzufügen serve-static:

$ npm installiere Serve-Static

Sie müssten auch Ihre server.jsDatei aktualisieren , um das neue serve-staticModul aufzunehmen:

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

var app = connect();

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

5
arbeitete für mich mit einem einzelnen Punkt im Fall des gleichen Ordners, dh ./angularjs
coure2011

@ coure2011 Dies hängt alles davon ab, pwdwann Sie den Knoten starten. Mit zwei Punkten korrekt ist , wenn ausgeführt , node server.jswenn sie von Start /angularjs(vermutlich ist Ihr PWD /angularjs/..)
Michael

Ich habe es versucht, jetzt erhalte ich eine Fehlermeldung im Browser "kann nicht bekommen /"
Ans Bilal

@AnsBilal versuchen Sie "localhost: 5000 / test.html". Angenommen, Sie folgen dem Beispiel im Buch (auf das im OP verwiesen wird), dass die URL für Sie funktionieren soll.
Akvallejos

Ja, ich habe ein Beispiel aus dem Buch ausprobiert (Pro AngularJs von Adam Freeman). Nach einer kleinen Bit-Suche kam ich zur Lösung und habe das auch in meinem Blog für andere gepostet: anscoding.blogspot.com/2017/11/…
Ans Bilal

8

Die Antwort von Dylants ist hilfreich. Hier sind jedoch die genauen Schritte, die ich ausgeführt habe, um den gleichen Fehler zu beheben. 1. Wechseln Sie im Befehlsfenster in das Verzeichnis, in dem Sie nodeJS installiert haben. 2. Nachdem Sie npm install connect bereits ausgeführt haben, führen Sie Folgendes aus:

npm install serve-static

3. Erstellen Sie eine Datei mit dem Namen server.js mit dem folgenden Code:

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

var app = connect();

app.use(serveStatic("./angularjs"));
app.listen(5000);
  1. Führen Sie Folgendes aus, während Sie sich noch im Befehlsfenster und in dem Verzeichnis befinden, in dem Sie nodeJS installiert haben:

    Knoten server.js

  2. Navigieren Sie zur URL http: // localhost: 5000 / test.html

Das sollte funktionieren. Hier ist meine Verzeichniskonfiguration: C: \ NodeJSInstallLocation \ anglejs



1

Vielleicht möchten Sie so etwas ausprobieren

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

0

Versuche dies...

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

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

Bitte fügen Sie eine Erklärung hinzu, was der Code tut
elcortegano
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.