プログラミング初心者です
実現したいこと
現在、ポートフォリオサイトを作成しています。
お問い合わせ部分をnode.js/JavaScriptを用いて実現を試みています。
下記のサイトを参考に作成しましたが、お問い合わせフォーム→milkcocoaへのデータストアはできています。しかし、milkcocoaからslackへの通知がうまくいきません。
どなたかわかる方、ご教示ください。
Qiita - milkcocoaで静的サイトにslack連携のお問い合わせフォーム
発生している問題・エラーメッセージ
デーモン化はpm2で行っています。
pm2 logs で確認した時に以下のエラーが表示されます。
エラー中にsocket.io-clientがないとでているのですが、インストールはされています。
app-0 (err): at Function.Module._load (module.js:280:25)
app-0 (err): at Function._load (/usr/lib/node_modules/pm2/node_modules/pmx/lib/transaction.js:62:21)
app-0 (err): at Module.require (module.js:364:17)
app-0 (err): at require (module.js:380:17)
app-0 (err): at Object.<anonymous> (/var/www/web/js/milkcocoa/index.js:1:2147)
app-0 (err): at Module._compile (module.js:456:26)
app-0 (err): at Object.Module._extensions..js (module.js:474:10)
app-0 (err): at Module.load (module.js:356:32)
app-0 (err): at Function.Module._load (module.js:312:12)
app-0 (err): Error: Cannot find module 'socket.io-client'
app-0 (err): at Function.Module._resolveFilename (module.js:338:15)
app-0 (err): at Function.Module._load (module.js:280:25)
app-0 (err): at Function._load (/usr/lib/node_modules/pm2/node_modules/pmx/lib/transaction.js:62:21)
app-0 (err): at Module.require (module.js:364:17)
app-0 (err): at require (module.js:380:17)
app-0 (err): at Object.<anonymous> (/var/www/web/js/milkcocoa/index.js:1:2147)
app-0 (err): at Module._compile (module.js:456:26)
app-0 (err): at Object.Module._extensions..js (module.js:474:10)
app-0 (err): at Module.load (module.js:356:32)
app-0 (err): at Function.Module._load (module.js:312:12)
ソースコード
app.js
var config = require('/var/www/web/js/config.js');
var request = require('/usr/lib/node_modules/request');
var MilkCocoa = require('/usr/lib/node_modules/milkcocoa');
var milkcocoa = new MilkCocoa('https://'+ config.appid +'.mlkcca.com');
var ds = milkcocoa.dataStore("データストア名");
ds.on('push', function(data) {
var mes = '「' + data.value.name + '('+ data.value.email +')」さんから問い合わせがありました。';
mes += '[' + data.value.title + ']';
mes += data.value.body;
var options = {
url: config.slack.url,
form: 'payload={"channel": "'+config.slack.channel+'", "username": "'+config.slack.username+'", "text": "'+ mes +'"}',
json: true
};
request.post(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}else{
console.log('error: '+ response.statusCode);
}
});
});
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
Error: Cannot find module 'socket.io-client'
って書いてありますけど。
モジュールが足りないってことですかね。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.21%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/03/03 10:44
var MilkCocoa = require('/usr/lib/node_modules/milkcocoa');
var milkcocoa = new MilkCocoa('https://'+ config.appid +'.mlkcca.com');
これ、大文字小文字で別ですが、紛らわしいので変えたほうがよいかもしれないすね。
通常、モジュールはモジュール名を変数に使うことが良くありますので、
var milkcocoa = require('/usr/lib/node_modules/milkcocoa');
var mk = new MilkCocoa('https://'+ config.appid +'.mlkcca.com');
なんてやると、寝覚め良いかもしれないすね。
2016/03/03 23:22 編集
Error: Cannot find module 'socket.io-client'に関してですが、導入はされているようです。
グローバルでのインストールなどもやってみましたが、同じエラーが発生してしまいました。
コードについてですが、確認すると可読性がよろしくない部分が多々ありました。
エラーの発生にもつながるので、これから改善していきたいと思います。
ご指摘ありがとうございます。
2016/03/04 00:33 編集
https://github.com/Automattic/browser-repl/issues/5
Nodeのバージョンあげたら直ったとかwww
node → v0.10.21 以上
npm → 1.3.11 以上
だそうです。
一度お試しを~。