Как я могу импортировать эту функцию?

#node.js #reactjs #typescript #express

Вопрос:

Я пытаюсь построить систему POS, которая взаимодействует с кухней. Прямо сейчас я пытаюсь импортировать редуктор на свой экспресс-сервер, но, похоже, я не могу импортировать его ни как функцию, ни как модуль. Я использую React и useContext с useReducer и хочу иметь центральную нервную систему для управления всеми действиями по отправке. Вот влияющие свернутые страницы, если это поможет:

 INDEX.JS
const app = require('express')();
const server = require('http').createServer(app);
const chooseSystem = require('./../kassa/controller/login/login.tsx');
import {reducer} from './src/utils/reducer'


const io = require("socket.io")(server, {
    cors: {
      origin: "http://192.168.0.25:8100",
      methods: ["GET", "POST"]
    }
  });

io.on('connection', (socket) => 
{ 
    // Landing page, user chooses system to log in to POS or kitchen
    socket.on('CHOOSESYSTEM', dispatchFunction => {
        chooseSystem.chooseSystem(dispatchFunction);
    });
});

server.listen(3000, () => { console.log("Listening on 3000");});


/////////////////////////////////////////////////////////////////////////////


REDUCER.TSX
import React from "react";
import { GlobalInitContextProps, GlobalStateProps } from "./interfaces";

  const reducer = (state = initGlobalState, action: any) => {
  switch (action.type) {
    case "LOG_IN_TO_POS":
      return {
        ...state,
        isLoggedIn: {
          inSystem: true,
          inPOS: true,
        },
      };
    case "LOG_IN_TO_KITCHEN":
      return {
        ...state,
        isLoggedIn: {
          inSystem: true,
          inPOS: false,
        },
      };
    case "GO_TO":
      return {
        ...state,
        ...action.payload,
      };
    default:
      return new Error("Something went wrong with the reducer");
  }
};

// Export
export {reducer};
 

Я попытался экспортировать его в виде модуля следующим образом: module.exports.reducer = редуктор и использовать require(«) в моем index.js но это не работает. Модуль не найден. Не обращайте внимания на функциональность, так как она не имеет смысла без остальных страниц

Это моя структура проекта:

  • KASSA
    • INDEX.JS
    • Src
      • УТИЛИ
        • редуктор

Комментарии:

1. Почему вы хотите использовать редуктор React в бэкэнде?

2. Я не знаю. Есть ли лучший способ справиться с глобальным состоянием или манипулировать им ?

Ответ №1:

попробуйте экспортировать редуктор по умолчанию

     REDUCER.TSX
import React from "react";
import { GlobalInitContextProps, GlobalStateProps } from "./interfaces";

  export default (state = initGlobalState, action: any) => {
  switch (action.type) {
    case "LOG_IN_TO_POS":
      return {
        ...state,
        isLoggedIn: {
          inSystem: true,
          inPOS: true,
        },
      };
    case "LOG_IN_TO_KITCHEN":
      return {
        ...state,
        isLoggedIn: {
          inSystem: true,
          inPOS: false,
        },
      };
    case "GO_TO":
      return {
        ...state,
        ...action.payload,
      };
    default:
      return new Error("Something went wrong with the reducer");
  }
};
 

И импорт его, как

 import reducer from './src/utils/reducer'
 

Комментарии:

1. Спасибо вам за ответ. Я попробовал ваш метод, но, к сожалению, я все еще получаю ошибку: Синтаксическая ошибка: Неожиданный идентификатор. «импорт редуктора из». /src/utils/редуктор». неожиданный идентификатор указывает на слово редуктор сразу после «импорт».