【问题标题】:Express framework giving a very strange errorExpress 框架给出了一个非常奇怪的错误
【发布时间】:2012-03-25 03:12:19
【问题描述】:

我正在尝试在 node 中使用 Express,安装一切正常,编译,获得 npm 并安装 express:

npm install express

问题是,每次我尝试“要求”它时,它都会给我一个错误! 看一下,一个简单的文件 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

有人可以帮助我吗?为什么我会收到此错误?我如何才能安装与 express 不同的版本?

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    问题是你可能有最新的连接(而不是“你需要安装最新的连接”)@Shripad 显示的命令很有帮助,可能会告诉你你有连接 1.0,耶...呃哦 express 还没有为 1.0 连接做好准备,这样做可以回到 0.5.10:

    npm install connect@0.5.10
    

    【讨论】:

    • 我遇到了同样的错误,但是当我回滚并且它显示 connect@0.5.10 处于活动状态时,我仍然遇到同样的错误。这是非常新的,可能与今天早些时候的升级有关。由于某种原因,它还没有完全回滚。
    • 今天很奇怪...检查您使用的是 express@1.0.7 和 connect@0.5.10
    • 是的 npm uninstall connect@1.*.* 不适合我。这些文件仍在 /usr/local/node/lib/connect 中,但我不敢开始 RMing。
    • 哦,您不需要卸载,只需安装您想要的版本,这将是活动版本,这样您仍然可以从应用程序中定位特定版本,如下所示:express = require ('express@1.0.7');
    • 这是 require.paths 的一个问题。节点在仍然有旧版本的目录中检查 express。我猜最新的 NPM 版本存储在 require.paths 中优先级较低的路径中。所以即使 NPM 安装并将 express@1.0.7 显示为活动状态,它也不会被节点使用。 :)
    【解决方案2】:

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

    npm ls connect | grep active

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

    【讨论】:

      【解决方案3】:

      注释掉包含连接的代码对我来说很有帮助。

      //connect = require('connect');

      【讨论】:

        【解决方案4】:

        尝试 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')
        

        这似乎需要最新版本的连接,而不是您在应用中需要的版本。

        【讨论】:

        • 按照您的建议安装依赖项对我没有帮助。不知何故,快递仍然安装了更新版本的连接,这似乎被使用了(?!?)。为了说明这一点,这是我的 npm ls 的 sn-p:tinypic.com/r/z1nxk/6
        【解决方案5】:

        对于其他人(如果您的 connect@1.0.1 没有使用 npm uninstall connect@1.0.1 卸载)我删除了在 /usr/local/lib/node/connect/ 找到的实际文件

        希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-22
          • 1970-01-01
          • 2022-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多