Почему эта ошибка: «Ошибка типа: _websocket_js__WEBPACK_IMPORTED_MODULE_0 __. Default.send не является функцией» возникает при импорте сокета? - PullRequest
0 голосов
/ 10 июня 2019

Я новичок в реагировании / избыточности, но я пытаюсь использовать его для создания внешнего интерфейса, который будет взаимодействовать с внутренним интерфейсом через RabbitMQ. У меня есть файл websockets.js, в котором я устанавливаю свой клиент websocket и STOMP:

import * as Stomp from 'stompjs';
var msgpack = require("msgpack-lite");

var onConn = () => {
  console.log('Successfully Connected');
  stompClient.subscribe('/queue/frontend-response', onMessage);
 //var params = { "params": "{}" };
 //var obj = JSON.stringify(msgpack.encode(params));
 //stompClient.send(
 //  '/exchange/product/product.request.find', 
 //  {'reply-to': 'frontend',  'correlation-id': 999}, 
 //  obj);
};

var onErr = (e) => {
  console.log('***************** Error:  ' + e);
};

function onMessage(msg) {
  console.log(msg);
}

var wss = new WebSocket("MY AMQP INSTANBCE");
var stompClient = Stomp.over(wss);
stompClient.connect(uname, pword, onConn, onErr, uname);

export default { stompClient }; 

Если я раскомментирую код в onConn, данные будут отправлены, а ответ получен правильно. Однако я бы хотел, чтобы этот сокет был импортирован любым компонентом, который должен взаимодействовать с серверной частью. У меня есть это в моем actions/index.js файле:

// src/js/actions/index.js
import stompClient from './websocket.js';
import { SET_PRODUCTS } from "../constants/action-types";

var msgpack = require("msgpack-lite");

export function setProducts(payload) {
  var params = { "params": "{}" };
  var obj = JSON.stringify(msgpack.encode(params));
  stompClient.send(
    '/exchange/product/product.request.find', 
    {'reply-to': 'frontend',  'correlation-id': 999}, 
    obj);
  return { type: SET_PRODUCTS, payload }
};

В настоящее время этот код выполняется при нажатии кнопки в пользовательском интерфейсе. Обратите внимание, что код в setProducts идентичен коду, который работает в websockets.js. Но здесь я не получаю никаких данных, я получаю ошибку, упомянутую в заголовке.

Может кто-нибудь объяснить, что здесь происходит, и предложить способ, которым я могу сделать эту работу вне моего websockets.js файла?

1 Ответ

0 голосов
/ 10 июня 2019

Вздох ... Я изменил export default { stompClient }; на export default stompClient;, и это работает.

...