質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Q&A

解決済

2回答

4624閲覧

[Heroku+Node.js]ローカル環境で動くが、デプロイした本番環境では動かない。

Choromatsu

総合スコア10

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

0グッド

0クリップ

投稿2015/11/09 16:10

お世話になります。
過去に似たようなタイトルの投稿がありましたが、少し私の困っている内容とは異なっておりましたので、投稿させて頂きました。

タイトルの通り、[Heroku+Node.js]で開発しているアプリがあるのですが、
ローカル環境では動いているのに、デプロイした本番環境では動かなくて困っています。
以下に、簡単にですが、自身の環境を記載します。

**==========================================================

【やろうとしていること】
・「mecab-lite」を使用した形態解析。
・「cheerio-httpcli」を使用した、特定URLの内容のスクレピング。

【エラーログ 抜粋】
Error: Command failed: /bin/sh -c mecab "/app/tmp/__mecab_tmp-in__1447081450486_0.9399180100299418" --output="/app/tmp/__mecab_tmp-out_1447081450486_0.9399180100299418"
Nov 09 07:04:11 limitless-coast-3133 app/web.1: /bin/sh: 1: mecab: not found
Nov 09 07:04:11 limitless-coast-3133 app/web.1: [検索するワード]undefined
Nov 09 07:04:11 limitless-coast-3133 app/web.1: [受け取ったワード]undefined
Nov 09 07:04:11 limitless-coast-3133 app/web.1: URL:undefined
Nov 09 07:04:11 limitless-coast-3133 app/web.1: url.js:110
Nov 09 07:04:11 limitless-coast-3133 app/web.1: throw new TypeError("Parameter 'url' must be a string, not " + typeof url)
Nov 09 07:04:11 limitless-coast-3133 app/web.1: ^
Nov 09 07:04:11 limitless-coast-3133 app/web.1: TypeError: Parameter 'url' must be a string, not undefined
Nov 09 07:04:11 limitless-coast-3133 app/web.1: at Url.parse (url.js:110:11)
Nov 09 07:04:11 limitless-coast-3133 app/web.1: at Object.urlParse [as parse] (url.js:104:5)
Nov 09 07:04:11 limitless-coast-3133 app/web.1: at Object.module.exports.prepare (/app/node_modules/cheerio-httpcli/lib/client.js:267:28)
Nov 09 07:04:11 limitless-coast-3133 app/web.1: at Object.module.exports.run (/app/node_modules/cheerio-httpcli/lib/client.js:304:24)
Nov 09 07:04:11 limitless-coast-3133 app/web.1: at Object.cheerioHttpCli.fetch (/app/node_modules/cheerio-httpcli/lib/core.js:63:19)
Nov 09 07:04:11 limitless-coast-3133 app/web.1: at SearchBot.getSearchContent (/app/server-search.js:56:12)
Nov 09 07:04:11 limitless-coast-3133 app/web.1: at Object.getResponse (/app/server-search.js:24:11)
Nov 09 07:04:11 limitless-coast-3133 app/web.1: at Bot.callback (/app/index.js:101:17)
Nov 09 07:04:11 limitless-coast-3133 app/web.1: at /app/server-bot_1.js:77:12
Nov 09 07:04:11 limitless-coast-3133 app/web.1: at /app/node_modules/mecab-lite/lib/mecab-lite.js:101:27

※一部console.logで出力しているメッセージもあります。

【package.js】
"dependencies": {
"cheerio-httpcli": "^0.3.6",
"cool-ascii-faces": "1.3.1",
"ejs": "2.3.3",
"express": "4.13.3",
"mecab-lite": "0.0.8",
"iconv": "*",
"mongodb": "^2.0.48",
"pg": "4.x",
"request": "^2.65.0"
},
"engines": {
"node": "0.12.7"
},
"repository": {
"type": "git",
"url": "https://github.com/heroku/node-js-getting-started"
},
"keywords": [
"node",
"heroku",
"express"
],

※関連しそうな部分のみ記載

==========================================================**

エラー内容的に、本番環境に「mecab」等のモジュールのインストールが出来ていないことが原因だと思うのですが、
そもそもHeroku環境にどうやってモジュールをインストールすれば良いのかが、調べても分かりませんでした。
(package.jsには、必要と思われるモジュールを記載しているつもりです)
あと「throw new TypeError("Parameter 'url' must be a string, not " + typeof url)」というエラーが出ているのも気になります。

何か解決の手掛かりをご教示頂ければと思い、投稿させて頂きました。
お力添えのほど、よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

package.jsonを見るとmecab-liteはインストールされているようですが、mecabがheroku上にインストールされていないように見えます。

個人的には外部プロセスが必要なmecabよりもkuromoji.jsの方が簡単でJavaScriptだけで済むのでおすすめします。

https://github.com/takuyaa/kuromoji.js

投稿2015/11/14 19:33

yosuke_furukawa

総合スコア390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Choromatsu

2015/11/16 08:56

yosuke様 コメントありがとうございます。 あれからずっと色々と試してみたのですが、エラーの解決が出来ず困り果てておりました。 昨日、yosuke様に紹介頂いたkuromojiを試したところ、無事にHeroku上で、形態素解析を行うことが出来ました。 まだ辞書登録など課題は残っておりますが、少し前進することが出来て、大変嬉しく思っております。 本当にありがとうございました。
guest

0

こちら を使用して、必要なモジュールをインストールできないか、試してみてはいかがでしょうか。

Heroku buildpack: linuxbrewを作りました。
linuxbrewを使って任意のパッケージを Heroku にデプロイできます。

linuxbrew でインストールできるパッケージ
braumeister.orgで探してください。

少なくとも、mecab Ver.0.996 はインストール可能なようです。

気になっていると仰っているエラーも、必要なモジュールがインストール出来ていないために発生しているように見受けられます。

投稿2015/11/09 21:07

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Choromatsu

2015/11/10 13:25 編集

pi-chan様 回答頂きまして、ありがとうございます。 残念ながら、紹介頂いたサイトをもとに調べてみましたが、 私の基本的な知識が足らないこともあり、解決に至りませんでした。 私の環境はWindowsなのですが、このLinuxbrewを使用した方法は可能なのでしょうか?(デプロイ先がHerokuなので、問題ないと認識しております) 私がそのサイトを解釈して実行した手順は、下記の通りです。 ============================== ①自分のGitアカウントを作成し、"heroku-buildpack-linuxbrew"をコミット。 ②上記①で作成したソースに、".cellar"と".buildpacks "を作成し、それぞれのファイル内に必要な内容を記述。 (".cellar ファイル内":mecab) (".buildpacks ファイル内":https://github.com/heroku/heroku-buildpack-nodejs.git) ③サイトの手順に沿って、下記のコマンドを実行。 $ heroku create --buildpack https://github.com/heroku/heroku-buildpack-multi $ heroku config:add LD_LIBRARY_PATH=/app/.linuxbrew/lib $ git push heroku master ============================== と実行してみましたが、mecabがインストールされた形跡はなく、 同じエラーが出力されました。 この解釈もしくは方法は誤っているのでしょうか? そもそもコマンドはそのまま実行しても良いのか、それともあくまで参考であり、自身の環境に置き換えて記述しないといけないのかも分からない状況です…。 重ね重ね恐縮ですが、ご教示頂ければ幸いです。 よろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問