【问题标题】:Cannot find module in Nodejs在 Nodejs 中找不到模块
【发布时间】:2013-12-25 03:20:29
【问题描述】:
module.js:340
    throw err;
          ^
Error: Cannot find module './models/todo'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\Users\Basel\Desktop\Todo List\routes\api.js:1:74)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)

C:\Users\Basel\Desktop\Todo List>

为什么这个应用程序无法启动?我已经尝试过全局 npm 安装。

【问题讨论】:

  • models 文件夹在哪里?
  • 您需要提供更多详细信息。 models 目录中是否有与调用require 的文件处于同一级别的todo.js 文件?
  • 是的。最初我称它为 todo。我对其进行了重构并将标题更改为 todos.js。随后,我更改了路线中的路径,以便它反映更改(到 ./models/todos'),但这也不起作用。
  • models 文件夹位于另一个名为 app 的文件夹下。让我猜我走错路了?
  • 那么是在\Todo List\app\models\todo.js这个位置吗?

标签: node.js mongodb crud


【解决方案1】:

./models/todo 中,句点表示节点将在api.js 所在的相同 文件夹中查找\Todo List\routes\models\todo.js。这不是从应用程序的根目录开始的。要做到这一点,您需要两个句点来跳转一个级别,并指定应用路径:

var todo = require('../app/models/todo');

【讨论】:

  • 在我的情况下,节点解析 ../ 就像它在 var todo = require('../app/models/todo');所以输出将是 ../app/models/todo 而不是 parent/app/models/todo!
【解决方案2】:

也许你没有设置系统值:NODE_PATH;它应该指向你的全局模块位置;

在 Linux 中:export NODE_PATH=/usr/local/lib/node_modules/ 适合我;

【讨论】:

    【解决方案3】:

    就我而言,我在 require 语句中给出的文件名是错误的。我有我的模型文件名为posts.js,我正在使用require('./models/post')。在我将其更改为 require ('.models/posts') 后它起作用了

    【讨论】:

      猜你喜欢
      • 2017-12-16
      • 2014-01-29
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      相关资源
      最近更新 更多