2016-09-20 5 views
0

Я разрабатываю веб-страницу и хочу использовать WebSockets для живых событий.Тот же код на разных хостах, один работает один не

В качестве backend я использую redis с подписчиком nodejs, который вызывает socket.io для отправки событий клиентам.

Но моя проблема начинается с первой строки моего скрипта.

var express = require('express')(); 
// ... 

На моем сервере (Ubuntu 16.04, nodejs v6.6.0, экспресс v4.14.0) она работает идеально,
, но в моей виртуальной разработки (Ubuntu 16.04, nodejs v6.6.0, экспресс v4.14.0) его говорит (EDIT новое сообщение об ошибке):

server.js:1 
(function (exports, require, module, __filename, __dirname) { var express = require('express')(); 
                          ^
TypeError: require(...) is not a function 
    at ... 

кто-нибудь идея, почему это происходит?

Также expressjs.com Главная говорит:

var express = require('express'); 
var app = express(); 

Вот обзор рабочего процесса: event workflow

ответ

1

Вы сделать что-либо в этом:

var app = require('express')(); 

или это:

var express = require('express'); 
var app = express(); 

Вы не делаете этого:

var express = require('express')(); 
var app = express(); 

Единственное различие между первыми двумя вариантами сохранить ли вы express модуль или нет для дальнейшего использования.

Третий неверно и будет генерировать сообщение об ошибке, которое вы сообщаете, поскольку в этом пункте express в третьем является объектом приложения, а не функцией.

+0

Спасибо за ваш быстрый ответ, это была плохая ошибка. Но, к сожалению, это не решило мою проблему. Я обновил свой вопрос, теперь я получаю 'require (...) не функция' – PKeidel

+2

@PKeidel - Это похоже на то, что он неправильно находит и загружает модуль' express'. Вы уверены, что его правильно установили на этом сервере? – jfriend00

+1

Является ли 'express' в вашей папке' node_modules'? – qxz

Смежные вопросы