Невозможно опубликовать /api/sentiment

Я тестирую конечную точку для /api/sentiment в почтальоне, и я не уверен, почему я получаю сообщение об ошибке не могу POST. Я считаю, что передаю правильные маршруты, и сервер прослушивает порт 8080. Все остальные конечные точки работают без проблем, поэтому я не уверен, что вызывает здесь ошибку.

файл server.js

const express = require("express");
const cors = require("cors");
const dbConfig = require("./app/config/db.config");

const app = express();

var corsOptions = {
  origin: "http://localhost:8081"
};

app.use(cors(corsOptions));

// parse requests of content-type - application/json
app.use(express.json());

// parse requests of content-type - application/x-www-form-urlencoded
app.use(express.urlencoded({ extended: true }));

const db = require("./app/models");
const Role = db.role;

db.mongoose
  .connect(`mongodb+srv://tami00:MEUxClWqUNbLz359@cluster0.gmvao.mongodb.net/test?retryWrites=true&w=majority`, {
    useNewUrlParser: true,
    useUnifiedTopology: true
  })
  .then(() => {
    console.log("Successfully connect to MongoDB.");
    initial();
  })
  .catch(err => {
    console.error("Connection error", err);
    process.exit();
  });

// simple route
app.use('/api/favourite', require('./app/routes/favourite.routes'));
app.use('/api/review', require('./app/routes/review.routes'));
app.use('/api/sentiment', require('./app/routes/sentiment-analysis.routes'));
// routes
// require(".app/routes/favourite.routes")(app);
require("./app/routes/auth.routes")(app);
require("./app/routes/user.routes")(app);

// set port, listen for requests
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}.`);
});

function initial() {
  Role.estimatedDocumentCount((err, count) => {
    if (!err && count === 0) {
      new Role({
        name: "user"
      }).save(err => {
        if (err) {
          console.log("error", err);
        }

        console.log("added 'user' to roles collection");
      });

      new Role({
        name: "creator"
      }).save(err => {
        if (err) {
          console.log("error", err);
        }

        console.log("added 'creator' to roles collection");
      });

      new Role({
        name: "watcher"
      }).save(err => {
        if (err) {
          console.log("error", err);
        }

        console.log("added 'watcher' to roles collection");
      });
    }
  });
}

файл маршрутов анализа настроений

const express =  require('express');
const router = express.Router();
const getSentiment = require('../sentiment-analysis/sentimentAnalysis')

router.post('/api/sentiment', (req, res) => {
    const data = req.body.data
    const sentiment = getSentiment(data)
    return res.send({sentiment})
})

module.exports = router;

Файл сентиментанализ.js

const aposToLexForm = require("apos-to-lex-form");
const {WordTokenizer, SentimentAnalyzer, PorterStemmer} =  require("natural");
const SpellCorrector = require("spelling-corrector");
const stopword =  require("stopword");

const tokenizer = new WordTokenizer();
const spellCorrector = new SpellCorrector();
spellCorrector.loadDictionary();

const analyzer = new SentimentAnalyzer('English', PorterStemmer, 'afinn')

function getSentiment(text){
    if(!text.trim()) {
        return 0;
    }

    const lexed = aposToLexForm(text).toLowerCase().replace(/[^a-zA-Z\s]+/g, "");

    const tokenized = tokenizer.tokenize(lexed)
    
    const correctSpelling = tokenized.map((word) => spellCorrector.correct(word))

    const stopWordsRemoved =  stopword.removeStopwords(correctSpelling)

    console.log(stopWordsRemoved)

    const analyzed = analyzer.getSentiment(stopWordsRemoved);

    console.log(analyzed)

}

module.exports = getSentiment;

console.log(getSentiment("Wow this is fantaztic!"))
console.log(getSentiment("let's go together?"))
console.log(getSentiment("this is so bad, I hate it, it sucks!"))

Не могли бы вы указать URL-адрес, который вы используете для запроса? Я вижу, что вы используете свои маршруты, например: app.use('/api/sentiment', require('./app/routes/sentiment-analysis.routes'));. Но затем в анализе настроений вы снова используете /api/sentiment, поэтому URL вашего запроса должен быть /api/sentiment/api/sentiment.

Vasilis 09.04.2022 14:24
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
1
1
28
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Разве не должно быть:

 const data = req.body.data

ой глупая ошибка с моей стороны. однако я изменил его и все еще получаю ошибку

tza00 09.04.2022 14:06
Ответ принят как подходящий

Я вижу, что вы используете свои маршруты, например: app.use('/api/sentiment', require('./app/routes/sentiment-analysis.routes'));. Но затем в своем анализе настроений вы снова используете /api/sentiment, поэтому URL-адрес вашего запроса должен быть /api/sentiment/api/sentiment.

Другие вопросы по теме