【问题标题】:Node.js - cannot find moduleNode.js - 找不到模块
【发布时间】:2011-07-14 13:04:06
【问题描述】:

我正在使用Node Boilerplate,一切正常,直到我决定在它之上创建另一个项目(在另一个目录中)。

现在我在两个不同的文件夹中有完全相同的代码库(这个项目原样)。我可以毫无问题地运行其中一个,但另一个却失败了:

% node app.js
node.js:116
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: Cannot find module 'connect/middleware/router'
    at Function._resolveFilename (module.js:299:11)
    at Function._load (module.js:245:25)
    at require (module.js:327:19)
    at Object.<anonymous> (/home/gotts/Sites/nodejs-uploadr/lib/express/lib/express/server.js:17:14)
    at Module._compile (module.js:383:26)
    at Object..js (module.js:389:10)
    at Module.load (module.js:315:31)
    at Function._load (module.js:276:12)
    at require (module.js:327:19)
    at Object.<anonymous> (/home/gotts/Sites/nodejs-uploadr/lib/express/lib/express/index.js:28:31)

这里解释了类似的问题 - https://github.com/visionmedia/express/issues/535 表示问题出在不兼容的 connect/express 版本中。

但这怎么可能呢?源代码在两个文件夹中完全相同,在一个副本中运行良好,在另一个副本中失败?

【问题讨论】:

    标签: node.js connect express npm


    【解决方案1】:

    这两个文件夹是否共享一个父文件夹? Node 在您的应用程序目录中的 ~/.node_modules 和 /node_modules 中查找模块。

    【讨论】:

      【解决方案2】:

      好的,让我回答我自己的问题:

      对不起,错误信息 - 这两个文件夹并不完全相同(我需要更好地学习 unix diff)。它在代码中需要(“连接”)

      连接到 /lib 文件夹的本地检出优先,但如果它不存在 - 连接将从 ~/.node_modules 加载,如 Ricardo 先前设置的那样。

      【讨论】:

        【解决方案3】:

        @查看最后一条评论中的node.js express module not loading properly,也许有帮助

        其基本思想是将模块安装在您的应用程序文件夹中,而不是在系统级别

        【讨论】:

        • 这对我有用,但我很困惑为什么使用-g 安装系统级别在运行的 js 文件中找不到模块。
        猜你喜欢
        • 1970-01-01
        • 2013-08-10
        • 2019-05-12
        • 2012-01-02
        • 2017-02-18
        • 2012-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多