смешивание модуля commonjs с модулем ES6 для экспорта двух функций

1

У меня есть этот файл: commonutils.js

import { isBoolean, isNil  } from 'lodash'; // isNil , check undefined or null
import moment from 'moment';

let dateToISO = function (dateString) {
  if (!dateString) {
    return null;
  }
  let p = dateString.split(/\D/g);
  return [p[2], p[1], p[0]].join('-');
}
let ISOtoDate = function (dateString) {
  if ( isNil(dateString) || dateString === '') {
    return  '';
  }
  return moment(dateString).format('DD-MM-YYYY');
}

module.exports.dateToISO = dateToISO;
module.exports.ISOtoDate = ISOtoDate;

когда я пытаюсь импортировать в webstorm, webstorm завершает имена для импорта при вводе:

import { dateToISO,  ISOtoDate } from './commonutils';

но когда я выполняю, я получаю эту ошибку:

./src/utils/validators.js
8:10-19 './commonutils' does not contain an export named 'dateToISO'.

что я делаю неправильно?

Обновить:

импортируя с этим:

const { dateToISO,  ISOtoDate } = require('./commonutils');

Я получил:

TypeError: Cannot set property 'dateToISO' of undefined
> module.exports.dateToISO = dateToISO;
  • 1
    хорошо, где определено dateToISO ?
  • 0
    я обновил ответ с полным кодом
Теги:
ecmascript-6
es6-module-loader
commonjs

1 ответ

0

Вы используете синтаксис экспорта модуля CommonJS с импортом ES6. Для импорта вам нужно сделать что-то вроде:

const { dateToISO,  ISOtoDate } = require('./commonutils');
  • 0
    спасибо, я получаю сейчас TypeError: Невозможно установить свойство dateToISO из неопределенного
  • 0
    Я не понимаю, почему вы используете экспорт CommonJS. Почему бы просто не использовать экспорт ES6 для двух функций?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню