这是项目结构:
/
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上工作。
答案 0 :(得分:104)
路径是相对于require
文件的目录,所以它应该是这样的:
var couch = require('./couch');
var config = require('../config');
如果你写的话,有点澄清
var couch = require('./couch');
如果你写的话,你正试图require
驻留在当前目录中的榻榻米模块
var couch = require('couch');
您正尝试require
通过npm
安装的沙发模块。
答案 1 :(得分:3)
以下是您的操作方法:
var users = require('./../modules/users');
答案 2 :(得分:2)
必须是:
var config = require(../../app/config)
var couch = require(./couch) (same directory)
答案 3 :(得分:0)
current accepted answer 正确并正确回答了问题。
虽然与原始问题没有直接关系,但我想在这里为所有那些在本地文件中遇到 >scour --help
错误但指定了正确的相对路径的人补充一点。
假设当前目录中存在一个名为 Cannot find module
的文件,
在不区分大小写的文件系统(如 Windows 上的 NTFS)上,这两行都可以使用 -
couch.js
但是,在区分大小写的文件系统(如 Linux 上的 ext4)上,var couch = require('./couch');
var couch = require('./Couch');
会起作用,但 require('./couch')
不会。
关于此有 a page in the NodeJS docs。
我希望这可以帮助那些在从 Windows/Mac 迁移到 Linux 后完美运行的代码停止工作的人。 ?