【问题标题】:Error: Cannot find module 'mkdirp' when pushing nodejs application onto heroku错误:在 heroku 上推送 nodejs 应用程序时找不到模块“mkdirp”
【发布时间】:2012-05-02 07:25:58
【问题描述】:

我执行 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"
  }
}

谁能给点建议?谢谢!

【问题讨论】:

    标签: javascript node.js heroku pug


    【解决方案1】:

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

    我收到一个警告,因为我缺少 mkdirp 并默认使用我刚刚安装的那个。 可能是因为我知道我在jade和stylus的node_modules中也肯定有mkdirp?

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

    【讨论】:

      【解决方案2】:

      在查看错误后,它与 Jade 无关,而与 Stylus 有关。这可能来自 Stylus 引用旧版本的问题,尽管使用 &gt;= 应该意味着它将获取最新版本。

      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,但从未尝试过旧版本。

      【讨论】:

      • 我将我的翡翠版本更改为 0.25.0,但我仍然收到同样的错误。还有其他可能的见解吗?
      猜你喜欢
      • 2014-05-02
      • 2019-12-24
      • 2022-07-17
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 2021-07-03
      • 2018-07-07
      相关资源
      最近更新 更多