不同主机上的相同代码,其中一个不能

时间:2016-09-20 20:35:01

标签: node.js socket.io

我正在开发一个网页,并希望将WebSockets用于直播活动。

作为后端,我使用redis和nodejs订阅者调用socket.io将事件发送给客户端。

但我的问题是从我脚本的第一行开始的。

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

在我的服务器上(Ubuntu 16.04,nodejs v6.6.0,表达v4.14.0),它完美无缺,
但在我的开发vm(Ubuntu 16.04,nodejs v6.6.0,表达v4.14.0)中,它说(编辑新的错误消息):

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

2 个答案:

答案 0 :(得分:1)

你这样做:

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

或者这个:

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

你不这样做:

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

前两个选项之间的唯一区别是您是否保存express模块以供将来参考。

第三个是错误的并且会生成您报告的错误,因为此时第三个express是一个app对象,而不是一个函数。

答案 1 :(得分:0)

就像我在16年9月21日在comment中写道,解决此问题的方法是:

rm -rf node_modules

npm install