nodejs connect non riesce a trovare static


118

NOTA: ho provato un'altra soluzione fornita qui ma non ha funzionato

Un principiante con NodeJs. Sto cercando di seguire AngularJS pro e sono rimasto bloccato con la configurazione del server NodeJs. Secondo il libro, ho installato nodejs e quindi ho installato il pacchetto di connessione utilizzando npm install connect

quindi scaricato angularjs nella cartella accanto alla cartella nodejs. Quindi ha scritto il file server.js per connettersi al server. Ecco il contenuto del file:

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

Quando eseguo questo file server.js usando:

node server.js

Ottengo il seguente errore:

 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

Qualche idea ragazzi? Grazie.

Risposte:


219

Il pacchetto connect ha apportato alcune modifiche nell'ultima versione 3.x del proprio codice base, spostando il staticmiddleware nel proprio pacchetto. È possibile visualizzare l'elenco dei pacchetti che sono stati spostati qui .

Quindi hai due opzioni:

Opzione 1
È possibile installare una versione precedente, 2.x di connect e utilizzarla così com'è:

$ npm install connect@2.XX

L'installazione dell'ultima versione 2.XX consentirà alla tua attuale implementazione di funzionare correttamente.

Opzione 2
È possibile continuare a utilizzare la versione 3.x di connect e aggiungere anche serve-static:

$ npm install serve-static

Dovresti anche aggiornare il tuo server.jsfile per includere il nuovo serve-staticmodulo:

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

var app = connect();

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

5
ha funzionato per me utilizzando un punto singolo nel caso della stessa cartella, ad esempio ./angularjs
coure2011

@ coure2011 Dipende tutto da te pwdquando avvii node. L'uso di due punti è corretto durante l'esecuzione node server.jsquando si inizia da /angularjs(presumibilmente il tuo pwd è /angularjs/..)
Michael

Ho provato questo, ora ricevo l'errore nel browser "impossibile ottenere /"
Ans Bilal

@ AnsBilal prova "localhost: 5000 / test.html". Supponendo che tu stia seguendo l'esempio nel libro (a cui si fa riferimento nell'OP), quell'URL dovrebbe funzionare per te.
akvallejos

sì, stavo provando un esempio dal libro (Pro AngularJs di Adam Freeman). Dopo un po 'di ricerca sono arrivato alla soluzione e l'ho pubblicata sul mio blog anche per altri: anscoding.blogspot.com/2017/11/…
Ans Bilal

8

La risposta di dylants è utile. Tuttavia, ecco i passaggi esatti che ho seguito per risolvere lo stesso errore. 1. Dalla finestra dei comandi, modificare la directory nella directory in cui è stato installato nodeJS. 2. Dopo aver già eseguito npm install connect, eseguire:

npm install serve-static

3. Creare un file denominato server.js con il codice seguente:

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

var app = connect();

app.use(serveStatic("./angularjs"));
app.listen(5000);
  1. Mentre sei ancora nella finestra di comando, e ancora nella directory in cui hai installato nodeJS, esegui:

    node server.js

  2. Accedi all'URL http: // localhost: 5000 / test.html

Questo dovrebbe funzionare. Ecco la mia configurazione della directory: C: \ NodeJSInstallLocation \ angularjs



1

Potresti provare qualcosa di simile

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

0

Prova questo...

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

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

Per favore aggiungi qualche spiegazione su cosa sta facendo il codice
elcortegano
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.