GVKun编程网logo

使用 Node.js 构建 Heroku 错误(node.js构建工具)

10

本文将介绍使用Node.js构建Heroku错误的详细情况,特别是关于node.js构建工具的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于Hero

本文将介绍使用 Node.js 构建 Heroku 错误的详细情况,特别是关于node.js构建工具的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于Heroku + node.js:我有一台使用多个端口的服务器。如何让Heroku分配它们?、Heroku + node.js:我有一台使用多个端口的服务器如何让Heroku分配它们?、Heroku + Node:找不到模块错误、heroku node.js bash:node:命令未找到的知识。

本文目录一览:

使用 Node.js 构建 Heroku 错误(node.js构建工具)

使用 Node.js 构建 Heroku 错误(node.js构建工具)

我不确定您将 node-pre-gyp 用于什么用途,但它的配置似乎不正确。您需要向 install 中的 "scripts" 对象添加一个 package.json 键,以及一个 "binary" 键。

来自文档:

"dependencies"  : {
      "node-pre-gyp": "0.6.x"
    },"devDependencies": {
      "aws-sdk": "2.x"
    }
    "scripts": {
        "install": "node-pre-gyp install --fallback-to-build"
    },"binary": {
        "module_name": "your_module","module_path": "./lib/binding/","host": "https://your_module.s3-us-west-1.amazonaws.com"
    }

https://www.npmjs.com/package/node-pre-gyp

也许这可能有助于您朝着正确的方向前进?

Heroku + node.js:我有一台使用多个端口的服务器。如何让Heroku分配它们?

Heroku + node.js:我有一台使用多个端口的服务器。如何让Heroku分配它们?

嗯,我会尽量清楚一点。

在用node.js编写的应用程序服务器中,我具有用于多个端口的内部代理:

  • 在我的8080港口,我有 休息用的api
  • 在我的3000港口,我有 推服务器和聊天室

我使用npm包subdomain-router进行内部路由到端口,在“前端”中公开子域,这些子域代理回到那些端口。
代码演示: <some-app>并非该应用的实名明显)

require(''subdomain-router'')({  host: ''<some-app>.herokuapp.com'',  subdomains:  {    '''': 8080,   // <some-app>.herokuapp.com <=> ::8080   --WORKS--    ''api'': 8080,  // api.<some-app>.herokuapp.com <=> ::8080    ''chat'': 3000, // chat.<some-app>.herokuapp.com <=> ::3000    ''push'': 3000  // push.<some-app>.herokuapp.com <=> ::3000  }}).listen(process.env.PORT || 5000);

该API很好用,尽管我无法通过进行访问<some-app>.herokuapp.com:8080,而只能通过<some-app>.herokuapp.com并让内部subdomain-router模块实现它的魔力。
另外,我无法访问子域。尝试访问时,api.<some-app>.herokuapp.comNo such app从heroku中获取错误页面。

TL; DR 访问<some-app>.herokuapp.com作品(重定向到/v1路径为我的API),但无法访问<some-app>.herokuapp.com:8080<some-app>.herokuapp.com:3000chat.<some-app>.herokuapp.com

尝试通过在url中指定端口来访问我的API( 例如<some-app>.herokuapp.com:8080:)时,在浏览器(谷歌浏览器)中出现以下错误:ERR_CONNECTION_REFUSED

根据我的推测 ,这可能与在heroku中 打开端口 有关,但是我不知道如何执行此操作(尝试使用谷歌搜索功能)。
它没有解释为什么我不能访问子域。

希望您能对此问题有所启发。
我是heroku的新手,真让人感到沮丧。

谢谢!
阿米特

答案1

小编典典

好的,经过研究后,我发现Heroku中的开放端口已被 禁用, 并且是 不允许的

解决此问题的 唯一方法 是使用 子域 ,然后在应用程序内使用代理模块(例如subdomain-router我使用的代理模块)。

但是 -Heroku不允许您在其域上创建子域,这意味着它your-app.herokuapp.com是固定的,不能有子域。
在Heroku手册中,他们要求您拥有自己的域和dns提供程序来执行此操作,方法是在域设置的dns表中创建一个A别名(CNAME),该别名将引用您的应用程序herokuapp域,然后使用herokudomains:add用于将您的域添加到允许的来源列表的命令。

您可以在这里阅读更多内容。它提供了您需要的所有信息。

希望它对一些人有所帮助。

Heroku + node.js:我有一台使用多个端口的服务器如何让Heroku分配它们?

Heroku + node.js:我有一台使用多个端口的服务器如何让Heroku分配它们?

嗯,我会尽量清楚一点。

在用node.js编写的应用程序服务器中,我具有用于多个端口的内部代理:

  • 在我的8080港口,我有 休息用的api
  • 在我的3000港口,我有 推服务器和聊天室

我使用npm包subdomain-router进行内部路由到端口,在“前端”中公开子域,这些子域代理回到那些端口。
代码演示: <some-app>并非该应用的实名明显)

require('subdomain-router')
({
  host: '<some-app>.herokuapp.com',subdomains:
  {
    '': 8080,// <some-app>.herokuapp.com <=> ::8080   --WORKS--
    'api': 8080,// api.<some-app>.herokuapp.com <=> ::8080
    'chat': 3000,// chat.<some-app>.herokuapp.com <=> ::3000
    'push': 3000  // push.<some-app>.herokuapp.com <=> ::3000
  }
}).listen(process.env.PORT || 5000);

该API很好用,尽管我无法通过进行访问<some-app>.herokuapp.com:8080,而只能通过<some- app>.herokuapp.com并让内部subdomain-router模块实现它的魔力。
另外,我无法访问子域。尝试访问时,api.<some-app>.herokuapp.comNo such app从heroku中获取错误页面。

TL; DR 访问<some-app>.herokuapp.com作品(重定向到/v1路径为我的API),但无法访问<some- app>.herokuapp.com:8080<some-app>.herokuapp.com:3000chat.<some- app>.herokuapp.com

尝试通过在url中指定端口来访问我的API( 例如<some- app>.herokuapp.com:8080:)时,在浏览器(谷歌浏览器)中出现以下错误:ERR_CONNECTION_REFUSED

根据我的推测 ,这可能与在heroku中 打开端口 有关,但是我不知道如何执行此操作(尝试使用谷歌搜索功能)。
它没有解释为什么我不能访问子域。

希望您能对此问题有所启发。
我是heroku的新手,真让人感到沮丧。

谢谢!
阿米特

Heroku + Node:找不到模块错误

Heroku + Node:找不到模块错误

我的Node应用程序在本地运行良好,但是在部署到Heroku时遇到错误。该应用程序使用Sequelize在一个/models文件夹,其中包含index.jsCompany.jsUsers.js。在本地,我可以使用中的以下代码导入模型/models/index.js

// load modelsvar models = [  ''Company'',  ''User''];models.forEach(function(model) {  module.exports[model] = sequelize.import(__dirname + ''/'' + model);});

这很好,但是,当我部署到Heroku时,应用程序崩溃并显示以下错误:

Error: Cannot find module ''/app/models/Company''   at Function.Module._resolveFilename (module.js:338:15)   at Function.Module._load (module.js:280:25)   at Module.require (module.js:364:17)   at require (module.js:380:17)   at module.exports.Sequelize.import (/app/node_modules/sequelize/lib/sequelize.js:219:24)   at module.exports.sequelize (/app/models/index.js:60:43)   at Array.forEach (native)   at Object.<anonymous> (/app/models/index.js:59:8)   at Module._compile (module.js:456:26)   at Object.Module._extensions..js (module.js:474:10)Process exited with status 8

最初我以为是由于区分大小写(本地mac与heroku linux),但是我移动了文件,进行了git
commit,然后又移回并再次提交,以确保Company.js在git存储库中大写。这不能解决问题,我不确定可能是什么问题。

答案1

小编典典

问题是由于区分大小写和文件命名。Mac OS X不区分大小写(但可以识别),而Heroku基于Linux,并且区分大小写。通过heroku runbash从终端运行,我可以看到该/models文件夹在Heroku的文件系统上的显示方式。解决方案是重命名User.jsCompany.js在本地系统上更改为新的临时文件,将更改提交到git,然后重命名User.jsCompany.js记住大写的首字母,然后再次通过git提交更改。以前,我曾尝试直接从user.jsto
User.js和to重命名文件company.jsCompany.js但是git commit和区分大小写的文件名更改未反映在Heroku上。

heroku node.js bash:node:命令未找到

heroku node.js bash:node:命令未找到

我的应用程序在雪松堆栈上的heroku上部署似乎有一个奇怪的问题,我的节点进程甚至没有被调用

我的procfile如下:

web: node web.js

和我的package.json文件:

{
 "name": "fuuzik","version": "0.0.1","dependencies": {
   "express": "3.x","jade":"*","mime-magic":"*"
  },"engines": {
  "node": "0.8.x","npm": "1.1.x"
  }
}

因此,在我提交并推送heroku检测到它是一个节点应用程序正确并正确构建我的依赖,甚至说它已部署..但应用程序在部署时立即崩溃并且heroku日志返回:

2012-08-29T08:52:14+00:00 heroku[api]: Deploy d9fdb17 by he610@doc.ic.ac.uk
2012-08-29T08:52:14+00:00 heroku[web.1]: State changed from crashed to starting 
2012-08-29T08:52:14+00:00 heroku[slugc]: Slug compilation finished
2012-08-29T08:52:16+00:00 heroku[web.1]: Starting process with command `node web.js`
2012-08-29T08:52:16+00:00 app[web.1]: bash: node: command not found
2012-08-29T08:52:17+00:00 heroku[web.1]: Process exited with status 127 
2012-08-29T08:52:17+00:00 heroku[web.1]: State changed from starting to crashed

foreman运行正常,根目录周围有几个.PHP文件(因为我正在移植一些旧代码),但我很确定应该被procfiles的逻辑所允许

根据要求,这里是本地npm安装的输出:

--[/DEBUG]--
jade@0.27.2 node_modules/jade
├── commander@0.6.1
└── mkdirp@0.3.0

express@3.0.0rc3 node_modules/express
├── methods@0.0.1
├── range-parser@0.0.4
├── fresh@0.1.0
├── cookie@0.0.4
├── crc@0.2.0
├── commander@0.6.1
├── debug@0.7.0
├── mkdirp@0.3.3
├── send@0.0.3 (mime@1.2.6)
└── connect@2.4.3 (pause@0.0.1,bytes@0.1.0,qs@0.4.2,formidable@1.0.11)

mime-magic@0.3.0 node_modules/mime-magic

这是推送时的git日志(它有点大,所以我把它连接起来):

http://pastebin.com/d424TBfR

任何帮助赞赏!

解决方法

尝试删除您的procfile.

显然,procfile指示heroku使用节点main.js运行应用程序,但节点不是有效命令,因为它不包含在PATH varialbe中,或类似.

通过删除procfile,heroku检测到该应用程序是一个流星应用程序,并使用节点的二进制文件以完整路径运行它.

另外,请记住必须以http://开头设置ROOT_URL

今天关于使用 Node.js 构建 Heroku 错误node.js构建工具的分享就到这里,希望大家有所收获,若想了解更多关于Heroku + node.js:我有一台使用多个端口的服务器。如何让Heroku分配它们?、Heroku + node.js:我有一台使用多个端口的服务器如何让Heroku分配它们?、Heroku + Node:找不到模块错误、heroku node.js bash:node:命令未找到等相关知识,可以在本站进行查询。

本文标签: