nodejs connect не може знайти статичну


118

ПРИМІТКА. Я спробував інше рішення, подане тут але воно не вийшло

Новачок із NodeJs. Я намагаюся слідкувати за AngularJS pro і застряг у налаштуванні сервера NodeJs. Відповідно до книги, я встановив nodejs, а потім встановив підключення пакету за допомогою npm install connect

потім завантажив angularjs у папку поруч із папкою nodejs. Потім написав файл 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проміжне програмне забезпечення до власного пакету. Ви можете переглянути список пакунків, переміщених сюди .

Отже, у вас є два варіанти:

Варіант 1
Ви можете встановити старішу, 2.x версію підключення та використовувати її так:

$ npm встановити connect@2.XX

Встановлення останньої версії 2.XX дозволить вашій поточній програмі функціонувати належним чином.

Варіант 2
Ви можете продовжити використовувати 3.x версію підключення, а також додати serve-static:

$ npm встановити сервісно-статичний

Вам також доведеться оновити 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час запуску з /angularjs(мабуть, ваш pwd /angularjs/..)
Майкл

Я спробував це, тепер я отримую помилку в браузері "не можу отримати"
Ans Bilal

@AnsBilal спробуйте "localhost: 5000 / test.html". Припустимо, що ви слідуєте прикладу в книзі (на який посилається в ОП), що URL-адреса повинна працювати для вас.
akvallejos

так, я намагався прикладу з книги (Pro AngularJs Адама Фрімана). Після освітленого пошуку біт я прийшов до рішення, і я опублікував це у своєму блозі для інших: anscoding.blogspot.com/2017/11/…
Ans Bilal

8

Відповідь ділантів корисна. Однак, ось точні кроки, які я дотримувався, щоб вирішити ту саму помилку. 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 connect = require('connect'),
    serveStatic = require('serve-static');

connect().use(
    serveStatic("angularjs")
).listen(5000);

4
Ласкаво просимо до SO. Будь ласка, читайте на сайті stackoverflow.com/help/how-to-answer . Ваша відповідь насправді не дає додаткового розуміння прийнятої відповіді.
Якес

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.