TypeError: обработчик аргументов должен быть функцией в Express Application [закрыто]Javascript

Форум по Javascript
Ответить
Anonymous
 TypeError: обработчик аргументов должен быть функцией в Express Application [закрыто]

Сообщение Anonymous »

Я пытаюсь создать приложение с Node JS и Express для автоматизации создания проекта в центре научных исследований, и у меня возникает ошибка »TypeError: обработчик аргументов должен быть функцией», когда я запускаю сервер. Это то, что появляется в консоли: < /p>
C:\\Users\\User\\Desktop\\SIGCENSA\\backend\\node_modules\\router\\index.js:392
throw new TypeError('argument handler must be a function')
^

TypeError: argument handler must be a function
at Function.use (C:\\Users\\User\\Desktop\\SIGCENSA\\backend\\node_modules\\router\\index.js:392:13)
at Function.\ (C:\\Users\\User\\Desktop\\SIGCENSA\\backend\\node_modules\\express\\lib\\application.js:222:21)
at Array.forEach (\)
at Function.use (C:\\Users\\User\\Desktop\\SIGCENSA\\backend\\node_modules\\express\\lib\\application.js:219:7)
at Object.\ (C:\\Users\\User\\Desktop\\SIGCENSA\\backend\\app.js:37:5)
at Module.\_compile (node:internal/modules/cjs/loader:1688:14)
at Object..js (node:internal/modules/cjs/loader:1820:10)
at Module.load (node:internal/modules/cjs/loader:1423:32)
at Function.\_load (node:internal/modules/cjs/loader:1246:12)
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
< /code>
node.js v22.18.0
Это мой основной файл (app.js): < /p>
const express = require('express');
const path = require('path');
const dotenv = require('dotenv');
const mongoose = require('mongoose');
const { connectMSSQL } = require('./config/dbMSSQL');
const authRoutes = require('./routes/authRoutes');
const workerRoutes = require('./routes/workerRoutes');
const projectRoutes = require('./routes/projectRoutes');
const userRoutes = require('./routes/userRoutes');
const cors = require('cors');
const knowledgeFieldRoutes = require('./routes/knowledgeFieldRoutes');

dotenv.config();

const app = express();
const PORT = process.env.PORT || 3000;

// Middlewares
app.use(cors({
origin: 'http://localhost:5173',
credentials: true
}));

app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, '../frontend')));

// Connections
connectMSSQL(); // SQL Server
require('./config/dbMongo')(); // MongoDB

// Routes
app.use('/api/auth', authRoutes);
app.use('/api/workers', workerRoutes);
app.use('/api/projects', projectRoutes);
app.use('/api/users', userRoutes);
app.use('/api/knowledge-fields', knowledgeFieldRoutes);

// Test route
app.get('/api', (req, res) => {
res.json({ message: 'API working' });
});

mongoose.connection.once('open', () => {
console.log('Connected to MongoDB');
app.listen(PORT, () => {
console.log(`Server running in http://localhost:${PORT}`);
});
});

mongoose.connection.on('error', (err) => {
console.error('MongoDB connection error:', err);
});
< /code>
Это Workercontroller: < /p>
const sql = require('mssql');
const { getMSSQLPool } = require('../config/dbMSSQL');

exports.getAllWorkers = async (req, res) => {
const { id } = req.params;

const pool = getMSSQLPool();

if (!pool) {
return res.status(503).json({ error: 'MS SQL is not available' });
}

try {
const result = await pool.request()
.input('id', id)
.query('SELECT * FROM RH_CENSA_2013 WHERE id = @id');

if (result.recordset.length === 0) {
return res.status(404).json({ message: 'Worker not found' });
}

res.json({name: result.recordset[0].name});

} catch (error) {
console.error(error);
res.status(500).json({ message: 'Error getting worker' });
}
};

exports.searchWorkers = async (req, res) => {
const pool = getMSSQLPool();
const { q } = req.query;

if (!pool) {
return res.status(404).json({ message: 'MS SQL is not available' });
}

if (!q || q.length < 2) {
return res.status(400).json({ message: 'Consulta "q" debe tener al menos 2 caracteres' });
}

try {
const result = await pool.request()
.input('name', sql.VarChar, `%${q}%`)
.query('SELECT id, name FROM RH_CENSA_2013 WHERE name LIKE @name ORDER BY name');

res.json(result.recordset);
} catch (error) {
console.error('Error buscando trabajadores:', error);
res.status(500).json({ message: 'Error al buscar trabajadores' });
}
};
< /code>
И это мой файл рабочего дня: < /p>
const express = require('express');
// const workerController = require('../controllers/workerController');
const {getAllWorkers} = require('../controllers/workerController');
const {searchWorkers} = require('../controllers/workerController');

const router = express.Router();

// Rutas
router.get('/', getAllWorkers);
router.get('/search', searchWorkers);

module.exports = router;
< /code>
Ответы AI говорит, что я использую маршрутизатор модуля, который не поддерживается Express, что экспресс -установка не должна иметь никаких зависимостей с именем маршрутизатора, но каждый раз, когда я переустанавливаю Express в зависимости, появляется маршрутизатор. Несмотря на то, что я использую express.router (), я попробовал удалить маршрутизатор, но он продолжает появляться в зависимостях.
Как это исправить? < /P>

Подробнее здесь: https://stackoverflow.com/questions/797 ... pplication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»