node.js 要求找不到自定义模块

Posted

技术标签:

【中文标题】node.js 要求找不到自定义模块【英文标题】:node.js require cannot find custom module 【发布时间】:2013-05-15 04:39:30 【问题描述】:

这是项目结构:

/
  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 上工作。

【问题讨论】:

【参考方案1】:

路径是相对于您requireing 文件所在的目录,所以它应该是这样的:

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

有点澄清,如果你写了

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

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

var couch = require('couch');

您正在尝试require 通过npm 安装的沙发模块。

【讨论】:

我尝试相对:var couch = require('couch'); var config = require('../config');找到配置但不是沙发。 你错过了require('couch');中的./ 我不和我一起工作:当我做require('qmlweb')require('./node_modules/qmlweb') 时,它说找不到模块。然而 qmlweb 安装在 node_modules/qmlweb 中,所有文件都在那里。 请打开一个新问题,发布您的相关信息,例如带有您的代码的 sn-p 等,如果您愿意,请在此处链接。【参考方案2】:

这是你的做法:

var users    = require('./../modules/users');

【讨论】:

【参考方案3】:

一定是:

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

var couch = require(./couch) (same directory)

【讨论】:

【参考方案4】:

current accepted answer 正确并正确回答了问题。

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

假设当前目录中存在一个名为couch.js的文件,

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

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

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

关于这个有a page in the NodeJS docs。

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

【讨论】:

以上是关于node.js 要求找不到自定义模块的主要内容,如果未能解决你的问题,请参考以下文章

使用 webpack 时 Node 找不到模块“fs”

环境问题-Pycharm终端terminal找不到(安装或自定义)模块

Drupal 8 自定义模块“找不到主题挂钩”

环境问题—Pycharm终端terminal找不到(安装或自定义)模块

找不到带有 Webpack、Typescript、自定义模块目录的模块

如何使用 TypeScript 导入自定义 node.js 插件模块