Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express框架给出了一个非常奇怪的错误_Javascript_Node.js_Express - Fatal编程技术网

Javascript Express框架给出了一个非常奇怪的错误

Javascript Express框架给出了一个非常奇怪的错误,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试在节点中使用Express,安装所有内容好的,已编译,获得npm,并使用以下内容安装Express: npm安装快车 问题是,每次我试图“要求”它时,它都会给我一个错误! 看一看,一个简单的文件app.js如下: var express = require('express'); 当我运行它时: tlab065:~/proj/Express-server-abstraction> node app.js node.js:116 throw e; // proc

我正在尝试在节点中使用Express,安装所有内容好的,已编译,获得npm,并使用以下内容安装Express:

npm安装快车

问题是,每次我试图“要求”它时,它都会给我一个错误! 看一看,一个简单的文件app.js如下:

var express = require('express');
当我运行它时:

tlab065:~/proj/Express-server-abstraction> node app.js 
node.js:116
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
TypeError: Cannot read property 'prototype' of undefined
    at Object.<anonymous> (/people/home/jdomingues/local/node/lib/node/.npm/express/1.0.7/package/lib/express/server.js:87:44)    
    at Module._compile (module.js:373:26)
    at Object..js (module.js:379:10)
    at Module.load (module.js:305:31)
    at Function._load (module.js:271:10)
    at require (module.js:317:19)
    at Object.<anonymous> (/people/home/jdomingues/local/node/lib/node/.npm/express/1.0.7/package/lib/express/index.js:28:31)
    at Module._compile (module.js:373:26)
    at Object..js (module.js:379:10)
    at Module.load (module.js:305:31
tlab065:~/proj/Express服务器抽象>node app.js
node.js:116
抛出e;//process.nextTick错误,或第一次勾选时的“error”事件
^
TypeError:无法读取未定义的属性“prototype”
反对。(/people/home/jdomingues/local/node/lib/node/.npm/express/1.0.7/package/lib/express/server.js:87:44)
在模块处编译(Module.js:373:26)
at Object..js(module.js:379:10)
在Module.load(Module.js:305:31)
at功能。加载(模块js:271:10)
根据需要(module.js:317:19)
反对。(/people/home/jdomingues/local/node/lib/node/.npm/express/1.0.7/package/lib/express/index.js:28:31)
在模块处编译(Module.js:373:26)
at Object..js(module.js:379:10)
在Module.load(Module.js:305:31

有人能帮我吗?为什么会出现此错误?我如何安装与express不同的版本?

您需要安装最新的connect(connect@0.5.10)。请确保检查已安装并处于活动状态的connect版本:

npm-ls-connect | grep-active


引发错误的行引用了connect.Server。

问题是您可能有最新的连接(而不是“您需要安装最新的连接”)@Shripad show命令很有帮助,可能会显示您已连接1.0,耶…哦,express还没有准备好连接1.0,请执行此操作以返回到0.5.10:

npm install connect@0.5.10
对于其他人(如果您的connect@1.0.1不使用npm卸载进行卸载connect@1.0.1)我删除了在/usr/local/lib/node/connect中找到的实际文件/

希望对您有所帮助。

请尝试jpstrikesback答案,并确保按照正确的顺序安装依赖项:

npm install connect@0.5.10
npm install express@1.0.7
因为npm install express将在express/1.0.7/package/lib/express/server.js中安装最新版本的connect(如果没有可用的连接,它将中断)

connect = require('connect')

这似乎需要最新版本的connect,而不是您在应用程序中所需的版本。

注释掉包含connect的代码在我的案例中是有帮助的


//connect=require('connect'))

我得到了同样的错误,但是当我回滚时,它显示出来了connect@0.5.10在活动状态下,我仍然收到相同的错误。这是一个非常新的错误,可能与今天早些时候的升级有关。由于某些原因,它没有完全回滚。今天很奇怪…请检查您是否正在使用express@1.0.7 & connect@0.5.10Yeah卸载控制nect@1.**对我不起作用。这些文件仍然在/usr/local/node/lib/connect中,但我害怕开始重新命名它们。哦,嘿,你不需要卸载,只需安装你想要的版本,这将是活动版本,这样你仍然可以从应用程序中以特定版本为目标,例如:express=require('express@1.0.7');这是require.path..节点在仍然具有旧版本的目录中检查express的问题。我猜最新的NPM版本存储在require.path中优先级较低的路径中..因此即使NPM安装并显示express@1.0.7处于活动状态时,节点不使用它。:)在我的情况下,按照您的建议安装依赖项没有帮助。不知怎的,express仍然安装了更新版本的connect,这似乎已经被使用了(?!?)。为了说明这一点,这里是我的npm ls的一个片段: