извлечение методов в свои файлы в ExpressJS: невозможно использовать оператор импорта вне модуля - PullRequest
1 голос
/ 20 января 2020

Сегодня я сделал свое первое приложение с ExpressJS.

Проблема в том, что index.js слишком велико (600 строк), я хотел бы организовать свой код в разные файлы.

Самая простая часть - это функции даты * stati c. У меня есть 5 функций, и я хотел бы поместить их в отдельный файл:

dates.js

import moment from "moment";

module.exports = {
    getNextMonday: (firstDate) => {
        let firstMonday = firstDate.add(1, "day").startOf('isoWeek');
        if (!firstDate.isSame(firstMonday)) {
            firstMonday = firstMonday.add(7, "day");
        }
        return firstMonday;
    },

// Get the days in a array
    getDays: (conso) => {
        let days = conso.map(value => moment(value['date'], "DD-MM-YYYY HH:mm").format("DD"));
        return days.filter(function (elem, pos) {
            return days.indexOf(elem) === pos;
        });
    },

// Get the days in a array
    getDaysWithHours: (conso) => {
        let days = conso.map(value => value['date']);
        // console.log(days);

        return days.filter(function (elem, pos) {
            return days.indexOf(elem) === pos;
        });
    },

    getHourlyData: (data, monday) => {
        return data.filter(item => {
            const date = moment(item.date, "DD-MM-YYYY HH:mm");
            // if moment(item.date, "DD-MM-YYYY HH:mm") + 7
            if (isSameWeek(monday, date)) return item;
        });
    },

    isSameWeek: (firstDay, secondDay) => {
        let firstMoment = moment(firstDay);
        let secondMoment = moment(secondDay);
        return firstMoment.startOf('isoWeek').isSame(secondMoment.startOf('isoWeek'));
    }
};

А затем в index.js я пытаюсь использовать их:

let date = require('./dates.js');
...
const monday = date.getNextMonday(firstDay);

Но я получаю ошибку:

import moment from "moment";
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at Module._compile (internal/modules/cjs/loader.js:891:18)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Module.require (internal/modules/cjs/loader.js:848:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/home/julien/Code/customer_recap/index.js:13:12)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
[nodemon] app crashed - waiting for file changes before starting...

Кажется, я не могу импортировать моментальную библиотеку lib в свой новый локальный модуль.

Почему? Как мне это сделать?

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