Передать функцию Express в другой файл, который вызывает HTTPS createServer - PullRequest
2 голосов
/ 12 октября 2019

Согласно Node Best Practices , рекомендуется разделять API сервера HTTP и Express.

Моя проблема в том, что createServer ожидает функцию в качестве второго аргумента, но я передаюв объекте.

app.js

const config = require('./config');
const express = require('express');
const app = express();

app.use(express.static(__dirname + config.STATIC_DIR));
app.use(express.json());

app.get('/', function (req, res) {
  res.sendFile(__dirname + '/index.html');
});

// POST /agent used for registration requests
app.post('/agent', (req, res) => {
  console.log('Received registration request from ', req.body);
  return res.send('Received a POST HTTP method');
});

server.js

const fs = require('fs');
const config = require('./config');
const mysql = require('mysql2/promise');
const app = require('./app');

const sslConfig = {
  key: fs.readFileSync(config.SSL_KEY),
  cert: fs.readFileSync(config.SSL_CERT)
};

const server = require('https').createServer(sslConfig, app);
const io = require('socket.io')(server);

Я получаю следующееошибка:

 throw new errors.ERR_INVALID_ARG_TYPE('listener', 'Function', listener);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "listener" argument must be of type Function. Received type object
    at checkListener (events.js:55:11)
    at _addListener (events.js:214:3)
    at Server.addListener (events.js:272:10)
    at new Server (https.js:67:10)
    at Object.createServer (https.js:85:10)
    at Object.<anonymous> (/Users/Code/server.js:18:8)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)

Какие изменения необходимы, если я хочу передать конфигурацию SSL в метод createServer?

1 Ответ

0 голосов
/ 12 октября 2019

Мне удалось решить проблему, добавив следующую строку в конце app.js:

module.exports = app;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...