65

这是项目结构:

/
  app.js
  package.json
  /node_modules
  /app
    config.json
    /frontend
      assets and html tpls
    /modules
      couch.js
      raeume.js
      users.js

我需要 app.js 中的 config.json、raeume.js 和 users.js,一切正常。

var config   = require('./app/config');
var raeume   = require('./app/modules/raeume');
var users    = require('./app/modules/users');

然后我需要来自 user.js 的 config.json 和 couch.js 以同样的方式,它不会找到任何东西。

var couch     = require('./app/modules/couch');
var config    = require('./app/config');

我想它应该找到它。经过一些研究,我看到了各种各样的问题,包括如何编译节点。因此包括:我使用节点 v0.10.7 在 osx 10.8 上工作。

4

4 回答 4

134

该路径是相对于您正在require编辑文件的目录的,因此它应该类似于:

var couch = require('./couch');
var config = require('../config');

一点澄清,如果你写

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

你正在尝试require驻留在当前目录中的沙发模块,如果你写

var couch = require('couch');

您正在尝试require通过npm.

于 2013-05-20T15:15:13.133 回答
3

当前接受的答案是正确的并且正确地回答了问题。

尽管与原始问题没有直接关系,但我想在此处为所有那些Cannot find module尽管指定了正确的相对路径但遇到本地文件错误的人补充一点。

couch.js假设当前目录中存在同名文件,

  • 在不区分大小写的文件系统(如 Windows 上的 NTFS)上,这两行都可以工作 -

    var couch = require('./couch');
    var couch = require('./Couch');
    
  • 但是,在区分大小写的文件系统(如 Linux 上的 ext4)上,require('./couch')它可以工作,但require('./Couch')不会。

NodeJS 文档中有一个关于此的页面。

我希望这可以帮助那些在从 Windows/Mac 迁移到 Linux 后完美运行的代码停止工作的人。

于 2021-07-02T21:17:19.740 回答
1

这是您的操作方法:

var users    = require('./../modules/users');
于 2013-05-20T15:16:06.653 回答
1

肯定是:

var config = require(../../app/config)

var couch = require(./couch) (same directory)
于 2017-08-19T08:47:10.643 回答