在服务器上找不到模块“../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的主要内容,如果未能解决你的问题,请参考以下文章

Express 找不到模块

错误:在 require.resolve('jquery') webpack 上找不到模块 'jquery'

在 Ubuntu 上找不到 Tkinter 模块

在 opentok 示例上找不到模块“ejs”

错误:在 Heroku 上找不到模块 Discord.js

在 websphere 上的 flyway 迁移上找不到位置