![](/img/trans.png)
[英]Child Process Node.js with CasperJs: Cannot find module 'casper'; require statement
[英]node.js require cannot find custom module
这是项目结构:
/
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');
我想它应该能找到它。 经过一些研究,我看到了各种各样的问题,包括如何编译节点。 因此包括:我在 osx 10.8 上工作,节点 v0.10.7。
该路径相对于您require
文件的目录,因此它应该类似于:
var couch = require('./couch');
var config = require('../config');
有点澄清,如果你写
var couch = require('./couch');
你正试图require
驻留在当前目录中的沙发模块,如果你写
var couch = require('couch');
您试图require
通过npm
安装沙发模块。
这是你如何做到的:
var users = require('./../modules/users');
一定是:
var config = require(../../app/config)
var couch = require(./couch) (same directory)
当前接受的答案是正确的,并正确回答了问题。
虽然与原始问题没有直接关系,但我想在这里为所有那些虽然指定了正确的相对路径但收到本地文件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 后完美运行的代码停止工作的人。 😅
还要仔细检查正在导入的文件的扩展名。 我不小心在 JavaScript 项目中使用了.ts
,这导致它无法被发现。 一旦我将扩展名更改为.js
, require
就能够很好地找到它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.