节点应用程序在本地主机上工作,但在 Heroku 上不起作用



我有一个node.js应用程序,当我在本地主机上执行npm运行dev(使用nodemon)时,该应用程序运行良好。但是,当我部署到 heroku 时,它每次都会崩溃。

我每次都收到一个H10错误以及此错误:错误:找不到模块"../型号/用户'

我已经尝试了所有常用的补救措施:我的端口是正确的

const PORT = process.env.PORT || 5000;

我添加了一个程序文件我删除了所有node_modules并将它们放在 .gitignore 中

然而,我仍然崩溃了。

我相信错误引用的代码行在我的一个路由中,即文件索引中.js

const express = require('express');
const router = express.Router();
const { ensureAuthenticated } = require('../config/auth');
const mongoose = require('mongoose');
const User = require('../models/User'); //Line I believe is the issue

我需要该行才能使我的应用程序正确执行。有人有什么建议吗?

编辑 - 文件夹结构:

>config
>models
   >User.js
>node_modules
>public
>routes
   >index.js
   >users.js
>views
>app.js
>package-lock.json
>package.json
>Procfile

我认为问题是由于区分大小写和文件名造成的。Mac OS X不区分大小写(但可以识别),而Heroku基于Linux并且区分大小写。

您可以尝试将User.js重命名为 user.js

通过从终端运行heroku run bash,然后ls ./models/,您可以看到/models文件夹如何出现在 Heroku 的文件系统上。

根文件夹中需要 app.yaml 文件。

env: flex
runtime: nodejs
api_version: '1.0'

最新更新