【问题标题】:Cannot find module '../models/user' Node.js on Server在服务器上找不到模块“../models/user”Node.js
【发布时间】: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

标签: node.js typescript npm node-modules ts-node


【解决方案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 中删除整个项目

    【讨论】:

      猜你喜欢
      • 2017-05-14
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      • 2017-01-22
      • 1970-01-01
      • 2020-09-24
      • 2021-12-28
      相关资源
      最近更新 更多