Экспресс: запрашиваемый модуль не обеспечивает экспорт с именем «Пользователь» - PullRequest
0 голосов
/ 10 апреля 2019

Я использую Nodemon и модуль ESM для использования синтаксиса ES6 в Express + Mongoose проекте.Я получаю эту ошибку при компиляции:

SyntaxError : Запрошенный модуль 'file: ///.../models/User.js' не обеспечивает экспорт с именем'Пользователь'

Файл моей модели (models / User.js) выглядит следующим образом:

import mongoose, { Schema } from 'mongoose';

const userSchema = new Schema({
  name: String,
  email: String,
  password: String,
  type: String,
  createdOn: String,
  updatedOn: String
});

const User = mongoose.model('user', userSchema);

module.exports = { User };

И затем я импортирую его:

import { User } from '../models/User';
import bcrypt from 'bcrypt';

export default {
    Query: {
        getUsers: async () => await User.find({}).exec()
    },
    Mutation: {
        addUser: async (_, args) => {
            try {
                const user = args;
                user.password = await hashPassword(args.password);
                user.createdOn = Date.now();
                user.updatedOn = Date.now();

                let response = await User.create(user);
                return response;

            } catch(e) {
                return e.message;
            }
        }
    }
};

Я следовал этому руководству , но он использует синтаксис ES5.Любые предложения приветствуются.

1 Ответ

1 голос
/ 10 апреля 2019

Вы смешиваете ES6-модули (import, export) с CommonJS (require/module.exports). Нам нужно заменить module.exports = { User }; на export const User = mongoose.model('user', userSchema);, чтобы успешно импортировать его как модуль ES6 в другой файл. Вы можете создать именованный экспорт в файле модели следующим образом:

import mongoose, { Schema } from 'mongoose';

const userSchema = new Schema({
  name: String,
  email: String,
  password: String,
  type: String,
  createdOn: String,
  updatedOn: String
});

export const User = mongoose.model('user', userSchema);

Что позволит вам импортировать так:

import { User } from '../models/User';
...