Экспресс-валидатор с модулями ESM
Я пытался импортировать в модуль ESM с этим синтаксисом в Node.js v8.7.0 с --experimental-modules
флаг:
import { check, validationResult } from 'express-validator/check';
import { matchedData, sanitize } from 'express-validator/filter';
Однако я получаю следующую ошибку:
(node:29028) ExperimentalWarning: The ESM module loader is experimental.
SyntaxError: The requested module does not provide an export named 'check'
at checkComplete (internal/loader/ModuleJob.js:86:27)
at moduleJob.linked.then (internal/loader/ModuleJob.js:69:11)
at <anonymous>
Как правильно использовать модули ESM, включенные с --experimental-modules
флаг?
Я проверял с @std/esm
Пакет также. Это работает только я cjs: true
,
1 ответ
Это происходит потому, что в Node.js модули CommonJS импортируются через import
только экспорт по умолчанию *.
Если модуль, который вы импортируете, не является модулем ES (как в случае с экспресс-валидатором), то все, что вы можете сделать, это примерно так:
import checkAPIs from 'express-validator/check';
import filterAPIs from 'express-validator/filter';
const { check, validationResult } = checkAPIs;
const { matchedData } = filterAPIs;
* Источник: https://medium.com/the-node-js-collection/an-update-on-es6-modules-in-node-js-42c958b890c
Использовать этот...
import validator from 'express-validator'
const { check, validationResult } = validator
Теперь при выполнении from 'express-validator/check'
, например, говорится: requires to express-validator/check are deprecated.You should just use require("express-validator") instead.
Как ни странно, до некоторой степени и модули CommonJS тоже.
import validator from 'express-validator'
const { body } = validator