节点应用程序可以在localhost上运行,但不能在Heroku上运行吗?

时间:2019-02-01 06:16:51

标签: javascript node.js mongodb heroku

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

我每次都会收到H10错误以及此错误: 错误:找不到模块'../ models / User'

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

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

我添加了一个Procfile 我删除了所有的node_modules并将它们放入.gitignore

但是我仍然崩溃。

我相信错误所引用的代码行是在我的一条路线中,该行在文件index.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

2 个答案:

答案 0 :(得分:0)

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

env: flex
runtime: nodejs
api_version: '1.0'

答案 1 :(得分:0)

我认为问题是由于区分大小写和文件命名。 Mac OS X不区分大小写(但知道),而Heroku基于Linux,并且区分大小写。

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

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