我执行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
显然,我在本地部署时没有这个问题。 我的jade模块中有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"
}
}
任何人都可以提出建议吗?谢谢!
答案 0 :(得分:1)
我通过执行npm install mkdirp然后按下来修复它。
我得到了一个警告但是因为缺少mkdirp并且默认为我刚安装的那个。 可能是因为我知道我在jade和stylus的node_modules中也肯定有mkdirp?
无论如何,该应用程序现已部署。
答案 1 :(得分:0)
在查看错误时,它与Jade无关,它与Stylus有关。它可能来自Stylus引用旧版本的问题,尽管使用>=
应该意味着它将获取最新版本。
Heroku push应列出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但从未尝试过旧版本。