的Heroku找不到模块

问题描述:

我试图要求在节点的一些JS文件, Localy - 伟大工程,但在Heroku的我得到这个错误 -的Heroku找不到模块

Error: Cannot find module './routes.js'

我的代码如下所示:

'use strict'; 

var express = require('express'); 
var app = express(); 

app.set('port', (process.env.PORT || 5000)); 
app.use(express.static(__dirname + '/public')); 

// Application Header 
app.use(function(request, response, next) { 
    response.header('Access-Control-Allow-Origin', '*'); 
    response.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
    response.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With, X-PINGOTHER'); 

    next(); 
}); 

// views is directory for all template files 
app.set('views', __dirname + '/views'); 
app.set('view engine', 'ejs'); 

    console.log('./routes.js'); 
require('./routes.js')(app); 

app.listen(app.get('port'), function() { 
    console.log('Node app is running on port', app.get('port')); 
}); 

我做错了什么? Thanx!

+0

你确定你确实提交了这个文件吗?因为代码对我来说很好。 –

+1

Heroku上存在该文件吗?第一:'heroku运行bash'然后:'cat routes.js'看。 – hunterloftis

您可以尝试运行一次性动态副本,让其列出目录内容 - 这将允许您检查您的文件是否在您期望的位置。 (Heroku的对这个here的更多信息。)例如:

heroku run 'ls -al'

这将导致Heroku的创造(很简单),你的应用程序的其他副本,并将它在列出应用程序的目录中的文件服务器。您可能会发现您的routes.js文件不在您期望的位置。 (?也许它不是住进了GIT)

如果您想闲逛进一步,运行:

heroku run bash

而且你将有一个交互式的bash shell到你的应用程序的副本。从那里你可以在文件系统中徘徊,尝试在服务器上手动运行你的应用程序等。

你错过了你在其他地方的__dirname

尝试禁用Heroku构建缓存以重新创建node_modules目录。

在安装了Heroku CLI,写:

$ heroku config:set NODE_MODULES_CACHE=false 
$ git commit -am 'disable_node_modules_cache' --allow-empty 
$ git push heroku master 

如上所述here