在 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 中找不到模块的主要内容,如果未能解决你的问题,请参考以下文章
Docker / NodeJS: "exec: \"-d\": $PATH 中找不到可执行文件"
Typescript Nodejs Dockerfile:错误 TS5057:在指定目录中找不到 tsconfig.json 文件:“。”