【问题标题】:Throw error URL when deploying nodejs to Heroku将 nodejs 部署到 Heroku 时抛出错误 URL
【发布时间】:2017-01-13 17:42:12
【问题描述】:

我有一个 node.js 服务器在 localhost 中成功运行。但是当我部署到 Heroku 时,服务器崩溃了。我检查了 local 和 heroku 是否具有相同的 node.js 和 npm 版本。 希望收到您的建议。 谢谢。

这是消息日志:

2017-01-13T04:16:32.949664+00:00 app[web.1]: > golaundryserver@1.0.0 start /app
2017-01-13T04:16:32.949665+00:00 app[web.1]: > node server.js
2017-01-13T04:16:32.949665+00:00 app[web.1]: 
2017-01-13T04:16:33.344617+00:00 app[web.1]: url.js:87
2017-01-13T04:16:33.344629+00:00 app[web.1]:     throw new TypeError('Parameter "url" must be a string, not ' + typeof url);
2017-01-13T04:16:33.344630+00:00 app[web.1]:     ^
2017-01-13T04:16:33.344631+00:00 app[web.1]: 
2017-01-13T04:16:33.344633+00:00 app[web.1]: TypeError: Parameter "url" must be a string, not undefined
2017-01-13T04:16:33.344634+00:00 app[web.1]:     at Url.parse (url.js:87:11)
2017-01-13T04:16:33.344636+00:00 app[web.1]:     at Object.urlParse [as parse] (url.js:81:5)
2017-01-13T04:16:33.344636+00:00 app[web.1]:     at new Sequelize (/app/node_modules/sequelize/lib/sequelize.js:125:24)
2017-01-13T04:16:33.344637+00:00 app[web.1]:     at Object.<anonymous> (/app/db.js:6:17)
2017-01-13T04:16:33.344638+00:00 app[web.1]:     at Module._compile (module.js:570:32)
2017-01-13T04:16:33.344638+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:579:10)
2017-01-13T04:16:33.344639+00:00 app[web.1]:     at Module.load (module.js:487:32)
2017-01-13T04:16:33.344640+00:00 app[web.1]:     at tryModuleLoad (module.js:446:12)
2017-01-13T04:16:33.344640+00:00 app[web.1]:     at Function.Module._load (module.js:438:3)
2017-01-13T04:16:33.344641+00:00 app[web.1]:     at Module.require (module.js:497:17)
2017-01-13T04:16:33.344642+00:00 app[web.1]:     at require (internal/module.js:20:19)
2017-01-13T04:16:33.344642+00:00 app[web.1]:     at Object.<anonymous> (/app/server.js:1:72)
2017-01-13T04:16:33.344643+00:00 app[web.1]:     at Module._compile (module.js:570:32)
2017-01-13T04:16:33.344643+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:579:10)
2017-01-13T04:16:33.344644+00:00 app[web.1]:     at Module.load (module.js:487:32)
2017-01-13T04:16:33.344645+00:00 app[web.1]:     at tryModuleLoad (module.js:446:12)
2017-01-13T04:16:33.353999+00:00 app[web.1]: 
2017-01-13T04:16:33.362350+00:00 app[web.1]: npm ERR! Linux 3.13.0-105-generic
2017-01-13T04:16:33.362417+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2017-01-13T04:16:33.362573+00:00 app[web.1]: npm ERR! node v6.9.4
2017-01-13T04:16:33.362726+00:00 app[web.1]: npm ERR! npm  v4.1.1
2017-01-13T04:16:33.362920+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2017-01-13T04:16:33.363075+00:00 app[web.1]: npm ERR! golaundryserver@1.0.0 start: `node server.js`
2017-01-13T04:16:33.363192+00:00 app[web.1]: npm ERR! Exit status 1
2017-01-13T04:16:33.363477+00:00 app[web.1]: npm ERR! 
2017-01-13T04:16:33.363609+00:00 app[web.1]: npm ERR! Failed at the golaundryserver@1.0.0 start script 'node server.js'.
2017-01-13T04:16:33.363736+00:00 app[web.1]: npm ERR! Make sure you have the latest version of node.js and npm installed.
2017-01-13T04:16:33.363916+00:00 app[web.1]: npm ERR! If you do, this is most likely a problem with the golaundryserver package,
2017-01-13T04:16:33.364086+00:00 app[web.1]: npm ERR! not with npm itself.
2017-01-13T04:16:33.364367+00:00 app[web.1]: npm ERR! Tell the author that this fails on your system:
2017-01-13T04:16:33.364662+00:00 app[web.1]: npm ERR!     node server.js
2017-01-13T04:16:33.365384+00:00 app[web.1]: npm ERR! You can get information on how to open an issue for this project with:
2017-01-13T04:16:33.365555+00:00 app[web.1]: npm ERR!     npm bugs golaundryserver
2017-01-13T04:16:33.365732+00:00 app[web.1]: npm ERR! Or if that isn't available, you can get their info via:
2017-01-13T04:16:33.365933+00:00 app[web.1]: npm ERR!     npm owner ls golaundryserver
2017-01-13T04:16:33.366104+00:00 app[web.1]: npm ERR! There is likely additional logging output above.
2017-01-13T04:16:33.370608+00:00 app[web.1]: 
2017-01-13T04:16:33.370806+00:00 app[web.1]: npm ERR! Please include the following file with any support request:
2017-01-13T04:16:33.370908+00:00 app[web.1]: npm ERR!     /app/npm-debug.log
2017-01-13T04:16:33.450002+00:00 heroku[web.1]: Process exited with status 1
2017-01-13T04:16:33.423935+00:00 heroku[web.1]: State changed from starting to crashed

【问题讨论】:

    标签: node.js heroku sequelize.js


    【解决方案1】:

    根据您显示的错误,我的假设是您在 /app/db.js 的第 6 行中传递给 Sequelize 的数据库连接字符串未在 Heroku 上定义,即使它是在您的计算机上定义的。

    可能的原因可能是您从环境变量或某些配置文件中获取它,这些文件在您的机器上可用但在 Heroku 实例上不可用。

    看看 Sequelize 是如何在 /app/db.js 中初始化的,这是 URL 的来源,可能会在那里添加一些 console.log(YOUR_VARIABLE_NAME),然后尝试确保它被定义为应有的内容。

    您可以在仪表板的 Heroku 上设置您的环境,这样您就不必在源代码中放置任何凭据,请参阅:

    【讨论】:

    • 非常感谢,我意识到我在连接数据库时的代码有一些错误。
    猜你喜欢
    • 1970-01-01
    • 2016-06-27
    • 2018-04-19
    • 2018-07-10
    • 1970-01-01
    • 2012-08-10
    • 2017-12-18
    • 2014-11-09
    • 1970-01-01
    相关资源
    最近更新 更多