繁体   English   中英

node.js require 找不到自定义模块

[英]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 ,这导致它无法被发现。 一旦我将扩展名更改为.jsrequire就能够很好地找到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM