本文将介绍使用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构建工具)
- Heroku + node.js:我有一台使用多个端口的服务器。如何让Heroku分配它们?
- Heroku + node.js:我有一台使用多个端口的服务器如何让Heroku分配它们?
- Heroku + Node:找不到模块错误
- heroku node.js bash:node:命令未找到
使用 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分配它们?
嗯,我会尽量清楚一点。
在用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.com
我No such app
从heroku中获取错误页面。
TL; DR 访问<some-app>.herokuapp.com
作品(重定向到/v1
路径为我的API),但无法访问<some-app>.herokuapp.com:8080
,<some-app>.herokuapp.com:3000
或chat.<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分配它们?
嗯,我会尽量清楚一点。
在用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.com
我No such app
从heroku中获取错误页面。
TL; DR 访问<some-app>.herokuapp.com
作品(重定向到/v1
路径为我的API),但无法访问<some-
app>.herokuapp.com:8080
,<some-app>.herokuapp.com:3000
或chat.<some-
app>.herokuapp.com
。
尝试通过在url中指定端口来访问我的API( 例如<some-
app>.herokuapp.com:8080
:)时,在浏览器(谷歌浏览器)中出现以下错误:ERR_CONNECTION_REFUSED
。
根据我的推测 ,这可能与在heroku中 打开端口 有关,但是我不知道如何执行此操作(尝试使用谷歌搜索功能)。
它没有解释为什么我不能访问子域。
希望您能对此问题有所启发。
我是heroku的新手,真让人感到沮丧。
谢谢!
阿米特
Heroku + Node:找不到模块错误
我的Node应用程序在本地运行良好,但是在部署到Heroku时遇到错误。该应用程序使用Sequelize在一个/models
文件夹,其中包含index.js
,Company.js
和Users.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.js
并Company.js
在本地系统上更改为新的临时文件,将更改提交到git,然后重命名User.js
并Company.js
记住大写的首字母,然后再次通过git提交更改。以前,我曾尝试直接从user.js
toUser.js
和to重命名文件company.js
,Company.js
但是git commit和区分大小写的文件名更改未反映在Heroku上。
heroku node.js bash:node:命令未找到
我的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指示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:命令未找到等相关知识,可以在本站进行查询。
本文标签: