当前位置: 首页 > 面试题库 >

在Heroku上将Git依赖项与npm和Node一起使用

费和惬
2023-03-14
问题内容

我有这个package.json文件:

{
    "name": "application-name"
  , "version": "0.0.1"
  , "private": true
  , "dependencies": {
      "coffee-script": "1.1.3"
    , "express": "2.5.0"
    , "less": "1.1.5"
    , "jade": "0.17.0"
    , "connect-redis": "1.2.0"
    , "hiredis": "0.1.13"
    , "redis": "0.7.1"
    , "bcrypt": "0.4.1"
    , "promised-io": "0.3.0"
    , "jugglingdb": "git://github.com/juggy/jugglingdb.git#master"
    , "nodemailer": "0.2.3"
  }
}

我想部署到Heroku。它在本地使用npm 1.0.105可以很好地工作,但是在Heroku上令人窒息(我在那里也将npm更新为1.0.105):

   -----> Heroku receiving push
   -----> Fetching custom build pack... done
   -----> Node.js app detected
   -----> Fetching Node.js binaries
   -----> Vendoring node 0.4.7
   -----> Installing dependencies with npm 1.0.105
          npm ERR! git checkout master fatal: Not a git repository: '.'
          npm ERR! Error: `git "checkout" "master"` failed with 128
          npm ERR!     at ChildProcess.<anonymous> (/tmp/node-npm-Jb2d/lib/utils/exec.js:49:20)
          npm ERR!     at ChildProcess.emit (events.js:67:17)
          npm ERR!     at ChildProcess.onexit (child_process.js:192:12)
          npm ERR! Report this *entire* log at:
          npm ERR!     <http://github.com/isaacs/npm/issues>
          npm ERR! or email it to:
          npm ERR!     <npm-@googlegroups.com>
          npm ERR! 
          npm ERR! System Linux 2.6.32-316-ec2
          npm ERR! command "/tmp/node-node-C3jD/bin/node" "/tmp/node-npm-Jb2d/cli.js" "install"
          npm ERR! cwd /tmp/build_2yzg7lk83o5m9
          npm ERR! node -v v0.4.7
          npm ERR! npm -v 1.0.105
          npm ERR! git checkout master fatal: Not a git repository: '.'
          npm ERR! 
          npm ERR! Additional logging details can be found in:
          npm ERR!     /tmp/build_2yzg7lk83o5m9/npm-debug.log
          npm not ok
    !     Failed to install dependencies with npm
    !     Heroku push rejected, failed to compile Node.js app

另外,我似乎也找不到在/ tmp中访问该日志文件的方法。

当有人成功在Heroku上部署Git依赖项时(在ruby方面:P可以正常工作)?


问题答案:

问题出在他们的nodejs
buildpack中。我已将修复请求发送给Heroku,但我不知道他们是否或何时响应。幸运的是,有一种使用非常详尽的方法来使用自定义buildpack,它将使您能够解决此问题。我已经分叉了Heroku的nodejs
buildpack并解决了这个问题-在这里可用:

https://github.com/chrisleishman/heroku-buildpack-
nodejs/tree/git_fix

要使用此功能,最好是创建自己的https://github.com/heroku/heroku-buildpack-
nodejs的github分支,然后合并到我的chrisleishman/git_fix分支中。例如(分叉后):

git clone git@github.com:@YOUR-GITHUB-NAME@/heroku-buildpack-nodejs.git
cd heroku-buildpack-nodejs
git remote add chrisleishman git://github.com/chrisleishman/heroku-buildpack-nodejs.git
git fetch chrisleishman
git merge chrisleishman/git_fix
git push

然后,您可以将BUILDPACK_URLconfig变量添加到您的heroku应用中。例如

heroku config:add BUILDPACK_URL="git://github.com/@YOUR-GITHUB-NAME@/heroku-buildpack-nodejs.git

然后,对heroku的下一次推送应使用包含修复程序的自定义buildpack。



 类似资料:
  • npm是否有安装依赖作为对等依赖的选项,如yarn选项,而不是手动添加它例如: 感谢@Broncha,更新问题的更多说明 问题是如何向项目添加对等依赖。那就是 将依赖项添加到package.json中的“dependencies”中, 如何安装将其添加到package.json?中的“对等依赖”的依赖项

  • 第一次尝试这样做,所以不确定我在做什么或如何设置它。 我需要调试我在应用程序中使用的库。最初,我把它安装在中。这对于调试来说不太好,我遇到了这个答案,描述了如果你需要对它进行修改,如何处理依赖项: https://stackoverflow.com/a/13302095/3123109 所以现在我正在做,它将回购的副本放入我的。 我的印象是这样做后它会“起作用”。当然没那么简单... 我试过的 >

  • 在阅读了很多关于这个问题的文章之后,并遵循了这个非常有用的帖子:在npmpackage.json文件中,依赖关系、devDependence和peerDependence之间有什么区别? 我知道依赖项应该引用每个运行时libs,devdependency引用每个对开发依赖项有用的libs。 但是我现在很困惑。对于生产使用,我将不得不我的Angular应用程序。如果我做了,我甚至不能用编译。我需要,

  • 问题内容: 我想问问是否有可能(通常是一个好主意)使用npm处理前端依赖项(Backbone,jQuery)。 我发现Backbone,jQuery等都可以通过npm获得,但我必须设置另一个提取点(默认为)或symlink或其他东西。 有人做过吗? 可能吗? 我必须更改什么? 问题答案: 简短的答案: 有点 。 在很大程度上要由模块作者来支持,但这并不常见。Socket.io是此类支持模块的示例,

  • 问题内容: 我正在尝试将我的应用程序部署到Heroku,但是我依靠使用一些私有git repos作为模块。我这样做是为了在项目之间重复使用代码,例如,我有一个用于多个应用程序的自定义记录器。 问题是Heroku显然没有ssh访问此代码。关于这个问题,我找不到任何东西。理想情况下,Heroku具有一个公共密钥,我可以将其添加到模块中。 问题答案: 简而言之,这是不可能的。我想出的解决此问题的最佳方法

  • 我尝试使ajv使用两个JSON-Schema,一个依赖于另一个。下面是我的模式的一个示例(简化): json 错误:没有带有键或引用“http://json-schema.org/draft-04/schema#”的模式 更新:如果我从types.json中删除“$schema…”,我得到的错误是: MissingReferror:无法从id#中解析引用types.json#/definition