在服务器上找不到模块“../models/user”Node.js
Posted
技术标签:
【中文标题】在服务器上找不到模块“../models/user”Node.js【英文标题】:Cannot find module '../models/user' Node.js on Server 【发布时间】:2020-04-14 21:07:18 【问题描述】:我可以在我的本地机器上正常启动我的节点应用程序,但是如果我随后从我的服务器上的 github 拉取项目并使用 npm start
启动它,我会收到此错误:
找不到模块“../models/user”。
import User = require('../models/user');
registrationController.ts 正在尝试访问 models/user。
这就是我在该文件中导入的方式:
import User = require('../models/user');
这是我的文件夹结构。我在突出显示的文件中收到错误:
这是我的npm start
脚本:
"scripts":
"start": "nodemon --watch '*.ts' --exec 'ts-node' app.ts"
【问题讨论】:
什么文件试图访问models/user
?您能否向我们展示一下代码以及它在目录中的位置?
registrationController.ts 正在尝试访问它。我更新了问题
您是否偶然在 github 或其他地方将此标记为“发布”?
我认为应该是import User from '../models/user';
或const User = require('../models/user');
。假设user.ts
有一个默认导出
不能解决问题@kaleidawave
【参考方案1】:
这不是在控制器中使用用户模型的正确语法,您应该将所需的模型直接分配给变量(const 或 var),如下所示:
const User = require('../models/user');
这个link 有关于两种方式(导入和要求)的详细信息。
【讨论】:
很遗憾没有解决问题 @jsbeginnerNodeJS 希望您从用户模型中导出模块。 我的文件名是 bitbucket 上的 User.ts 而不是 user.ts 我之前用 user.ts 将它推送到 bitbucket 但文件名没有改变!!!所以我不得不从 bitbucket 中删除整个项目 好的,但是根据你的问题,我认为我的回答是正确的:)【参考方案2】:看起来像是将 es6 语法与旧语法混合在一起
如果您将该模块导出为默认导出,请使用这种方式
import User from '../models/user';
否则使用
const User = require('../models/user')
确保您正在像这样导出模块
module.exports = <Your Module>
【讨论】:
【参考方案3】:我的文件名是 bitbucket 上的 User.ts 而不是 user.ts
我之前使用 user.ts 将其推送到 bitbucket,但文件名没有更改!!!所以我不得不从 bitbucket 中删除整个项目
【讨论】:
以上是关于在服务器上找不到模块“../models/user”Node.js的主要内容,如果未能解决你的问题,请参考以下文章