nodejs подключает использование встроенных модулей -> метод не найден

#node.js #connect

#node.js #Контакты

Вопрос:

когда я вызываю это node.js файл

 var connect = require('connect');
var app = connect();
app.use(connect.static('public'));
app.listen(3000);
  

Я сразу получаю

 app.use(connect.static('public'));
                      ^
TypeError: Object function createServer() {
  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'
  

Используя Connect 3.0.1, есть ли изменения в интегрированных модулях?
Если да, то как это работает тогда?

Ответ №1:

большие изменения, связанные с подключением 3: модули промежуточного программного обеспечения больше не включены. Найдите их по адресу github.com/expressjs . «статический» теперь «обслуживающий-статический». Его необходимо установить отдельно с:

npm install serve-static

Приведенный выше код теперь должен выглядеть следующим образом:

 var connect = require('connect');
var serveStatic = require('serve-static');
var app = connect();
app.use(serveStatic('public'));
app.listen(3000);
  

Комментарии:

1. это должно быть в документации… печально то, что это не так:(

2. был добавлен сейчас, по крайней мере, здесь: github.com/senchalabs/connect/blob/master/Readme.md

3. Я предполагаю, что они все еще находятся в процессе обновления документов, все еще не обновленных здесь: senchalabs.org/connect

4. Для проекта, с которым я работаю, мне нужно было изменить serveStatic('public') на serveStatic(__dirname)

5. Связанный: мне также пришлось установить gulp-serve-index и заменить connect.directory('app') на serveIndex('app')

Ответ №2:

Мне пришлось установить connect и обслуживать-static

 npm install connect
  

затем введите:

 npm install serve-static
  

Приведенный ниже код выдаст вам приятное сообщение о том, что ваш сервер подключен к порту 3000.

 var connect = require('connect');
var serveStatic = require('serve-static');
var app = connect();
var port = 3000;
app.use(serveStatic(__dirname));
app.listen(port);
console.log('You are connected at port ' port);