错误:在将nodejs应用程序推送到heroku上时找不到模块“mkdirp”

我做npm install -d,然后用git heroku push master推送所有的东西。 在我的heroku日志中,它会显示:

2012-05-01T00:21:37+00:00 heroku[web.1]: Starting process with command `node app.js` 2012-05-01T00:21:39+00:00 app[web.1]: 2012-05-01T00:21:39+00:00 app[web.1]: node.js:201 2012-05-01T00:21:39+00:00 app[web.1]: ^ 2012-05-01T00:21:39+00:00 app[web.1]: Error: Cannot find module 'mkdirp' 2012-05-01T00:21:39+00:00 app[web.1]: at Function._load (module.js:279:25) 2012-05-01T00:21:39+00:00 app[web.1]: at Module.require (module.js:354:17) 2012-05-01T00:21:39+00:00 app[web.1]: throw e; // process.nextTick error, or 'error' event on first tick 2012-05-01T00:21:39+00:00 app[web.1]: at Function._resolveFilename (module.js:332:11) 2012-05-01T00:21:39+00:00 app[web.1]: at require (module.js:370:17) 2012-05-01T00:21:39+00:00 app[web.1]: at Object.<anonymous> (/app/node_modules/stylus/lib/middleware.js:16:14) 2012-05-01T00:21:39+00:00 app[web.1]: at Module._compile (module.js:441:26) 2012-05-01T00:21:39+00:00 app[web.1]: at Object..js (module.js:459:10) 2012-05-01T00:21:39+00:00 app[web.1]: at Module.load (module.js:348:31) 2012-05-01T00:21:39+00:00 app[web.1]: at Function._load (module.js:308:12) 2012-05-01T00:21:39+00:00 app[web.1]: at Module.require (module.js:354:17) 2012-05-01T00:21:40+00:00 heroku[web.1]: Process exited with status 1 2012-05-01T00:21:40+00:00 heroku[web.1]: State changed from starting to crashed 

显然,我在本地部署时没有这个问题。 我的模块里有mkdirp模块,它位于我的应用程序的node_modules里面。

我也有Procfile:

 web: node app.js 

这是我的package.json:

 { "name": "gemini" , "version": "0.0.1" , "contributors": [ { "name": "****", "email": "****" } ] , "private": true , "engines": { "node": ">= 0.2.0" } , "dependencies": { "express": "2.5.1" , "stylus": ">= 0.17.0" , "jade": "0.3.0" } } 

任何人都可以请指教? 谢谢!

我通过执行npm install mkdirp然后推送来修复它。

我得到一个警告,虽然缺lessmkdirp和默认我刚刚安装。 也许是因为我知道我在jade和stylus的node_modules里面肯定也有mkdirp了?

无论如何,该应用程序现在部署。

在审查错误,这是不相关的翡翠,它与手写笔相关。 它可能来自Stylus引用旧版本的问题,尽pipe使用>=应该意味着它将抓取最新版本。

Heroku推送应该列出哪些模块被Heroku检测为依赖关系并安装。

你引用的Jade版本真的很老,目前的版本是0.25.0 ; 你在哪里使用0.3.0

我已经看过这个版本,这是package.json内容:

 { "name": "jade", "description": "Jade template engine", "version": "0.3.0", "author": "TJ Holowaychuk <tj@vision-media.ca>", "main": "./lib/jade.js", "bin": { "jade": "./bin/jade" }, "engines": { "node": ">= 0.1.98" } } 

你会注意到,它没有指定mkdirp是一个依赖项,但它可能是要求它(我没有深入到源)。

我已经成功地在Heroku上运行Jade 0.25.0,但从来没有尝试旧版本。