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

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

ただいまの
回答率

90.51%

  • Node.js

    2358questions

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

  • Slack

    230questions

    Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

  • Milkcocoa

    110questions

    Milkcocoaとは、バックエンド機能を提供するBaaSサービスの一つです。サーバを準備することなく、フロントエンドのコーディングだけでデータの保存・更新・取得、またPub/Sub通信行うことが可能です。

milkcocoaからslackへの通知がうまくいかない

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 964

msk6252

score 2

プログラミング初心者です

実現したいこと

現在、ポートフォリオサイトを作成しています。
お問い合わせ部分を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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

Error: Cannot find module 'socket.io-client'


って書いてありますけど。

モジュールが足りないってことですかね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/03 10:44

    別件ですが気になったので。

    var MilkCocoa = require('/usr/lib/node_modules/milkcocoa');
    var milkcocoa = new MilkCocoa('https://&#039;+ config.appid +'.mlkcca.com');

    これ、大文字小文字で別ですが、紛らわしいので変えたほうがよいかもしれないすね。
    通常、モジュールはモジュール名を変数に使うことが良くありますので、

    var milkcocoa = require('/usr/lib/node_modules/milkcocoa');
    var mk = new MilkCocoa('https://&#039;+ 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 以上
    だそうです。

    一度お試しを~。

    キャンセル

同じタグがついた質問を見る

  • Node.js

    2358questions

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

  • Slack

    230questions

    Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

  • Milkcocoa

    110questions

    Milkcocoaとは、バックエンド機能を提供するBaaSサービスの一つです。サーバを準備することなく、フロントエンドのコーディングだけでデータの保存・更新・取得、またPub/Sub通信行うことが可能です。