在 Nodejs 中找不到模块

Posted

技术标签:

【中文标题】在 Nodejs 中找不到模块【英文标题】:Cannot find module in 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这个位置吗? 【参考方案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') 后它起作用了

【讨论】:

以上是关于在 Nodejs 中找不到模块的主要内容,如果未能解决你的问题,请参考以下文章

在 React 中找不到所需的模块

错误:在 server.js 中找不到模块“res”

在nodejs中的videoshow中找不到ffmpeg

Docker / NodeJS: "exec: \"-d\": $PATH 中找不到可执行文件"

Typescript Nodejs Dockerfile:错误 TS5057:在指定目录中找不到 tsconfig.json 文件:“。”

为啥我的 maven 模块在项目中找不到另一个模块? [复制]