Невозможно установить соединение через веб-сокет с Amber или NPM, не уверен, какой - PullRequest
0 голосов
/ 21 января 2019

Amber CLI (amberframework.org) - v0.11.3 Crystal 0.27.0 [c9d1eef8f] (2018-11-01) LLVM: 4.0.0 Цель по умолчанию: x86_64-unknown-linux-gnu npm 3.5.2

Я пытаюсь реализовать сокеты с Crystal Lang и Amber.Я следовал инструкциям Amber Docs и Github Amber Readme. Однако я получаю сообщение об ошибке.

У меня запущены "npm run watch" и "amber"часы".Я вижу обновление веб-браузера при внесении изменений в main.js.

//main.js
import 'bootstrap';
import $ from 'jquery';
import Amber from 'amber';

let socket = new Amber.Socket('/notification')
socket.connect().then(function() {
  let channel = socket.channel('chat_room:hello');

  channel.join();

  channel.push('message_new', {
    message: "Hello Amber from WebSocket Client!"
  });

  channel.on('message_new', function(payload) {
    console.log(payload);
  });
});
// Uncaught TypeError: Cannot read property 'Socket' of undefined
// at Module../src/assets/javascripts/main.js (main.js:28)
// at __webpack_require__ (bootstrap:19)
// at Module../config/webpack/entry.js (entry.js:1)
// at __webpack_require__ (bootstrap:19)
// at bootstrap:83
// at bootstrap:83

ОБНОВЛЕНИЕ:

После проверки источников я заметил, что существует 2 версии main.js.Версия с ошибкой находится в "webpack: //.src/assets/javascripts/main.js".Когда я проверяю этот файл во время выполнения, Янтарь не может быть найден.«ReferenceError: янтарный не определен» Вторая версия файла находится в «/dist/main.bundle.js».Я не уверен, почему оба имущества обслуживаются.Возможно, это проблема с npm?

1 Ответ

0 голосов
/ 02 февраля 2019

Мне удалось найти ответ на Янтарных форумах . Казалось бы, функциональность по умолчанию была случайно нарушена во время коммита и был сделан pr. Я копирую ответ Джектурнбулла здесь.

Решение 1, измените строку импорта Amber на:

import * as Amber from 'amber';

Решение 2:

import { Channel, Socket } from 'amber';

// Then reference as:
let socket = new Socket('/notification');
...
...