nodejs connect ne peut pas trouver de statique


118

REMARQUE: j'ai essayé une autre solution donnée ici mais cela n'a pas fonctionné

Un débutant avec NodeJs. J'essaie de suivre AngularJS pro et je suis resté coincé dans la configuration du serveur NodeJs. Selon le livre, j'ai installé nodejs puis installé le package connect à l'aide de npm install connect

puis téléchargé angularjs dans le dossier à côté du dossier nodejs. Puis écrit le fichier server.js pour se connecter au serveur. Voici le contenu du fichier:

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

Lorsque j'exécute ce fichier server.js en utilisant:

node server.js

J'obtiens l'erreur suivante:

 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

Des idées les gars? Merci.

Réponses:


219

Le package connect a apporté quelques modifications à la dernière version 3.x de leur base de code, déplaçant le staticmiddleware vers son propre package. Vous pouvez voir la liste des packages qui ont été déplacés ici .

Vous avez donc deux options:

Option 1
Vous pouvez installer une ancienne version 2.x de connect et l'utiliser telle quelle:

$ npm installer connect@2.XX

L'installation de la dernière version 2.XX permettra à votre implémentation actuelle de fonctionner correctement.

Option 2
Vous pouvez continuer à utiliser la version 3.x de connect et également ajouter serve-static:

$ npm installer serve-static

Vous devrez également mettre à jour votre server.jsfichier pour inclure le nouveau serve-staticmodule:

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

var app = connect();

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

5
a fonctionné pour moi en utilisant un point unique dans le cas du même dossier, par exemple ./angularjs
coure2011

@ coure2011 Tout dépend de votre pwdquand vous démarrez node. L'utilisation de deux points est correcte lors de l'exécution node server.jsau départ de /angularjs(probablement votre pwd est /angularjs/..)
Michael

J'ai essayé ceci, maintenant j'obtiens une erreur dans le navigateur "ne peut pas obtenir /"
Ans Bilal

@AnsBilal essayez "localhost: 5000 / test.html". En supposant que vous suivez l'exemple du livre (référencé dans l'OP), cette URL devrait fonctionner pour vous.
akvallejos

oui j'essayais un exemple du livre (Pro AngularJs par Adam Freeman). Après une petite recherche éclair,
Ans Bilal

8

La réponse par les dylants est utile. Cependant, voici les étapes exactes que j'ai suivies pour résoudre la même erreur. 1. Dans la fenêtre de commande, passez au répertoire dans lequel vous avez installé nodeJS. 2. Après avoir déjà exécuté npm install connect, exécutez:

npm install serve-static

3. Créez un fichier nommé server.js avec le code suivant:

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

var app = connect();

app.use(serveStatic("./angularjs"));
app.listen(5000);
  1. Alors que toujours dans la fenêtre de commande, et toujours dans le répertoire dans lequel vous avez installé nodeJS, exécutez:

    nœud server.js

  2. Accédez à l'URL http: // localhost: 5000 / test.html

Cela devrait fonctionner. Voici ma configuration de répertoire: C: \ NodeJSInstallLocation \ angularjs



1

Vous voudrez peut-être essayer quelque chose comme ça

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

0

Essaye ça...

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

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

Veuillez ajouter quelques explications sur ce que fait le code
elcortegano
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.