【问题标题】:Express: The requested module does not provide an export named 'User'Express:请求的模块不提供名为“用户”的导出
【发布时间】:2019-08-31 23:58:15
【问题描述】:

我正在使用 Nodemon 和 ESM 模块在 Express + Mongoose 项目中使用 ES6 语法。编译时出现此错误:

SyntaxError:请求的模块“file:///.../models/User.js”未提供名为“User”的导出

我的模型文件(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;
            }
        }
    }
};

我关注this guide,但他使用的是 ES5 语法。任何建议表示赞赏。

【问题讨论】:

    标签: javascript express mongoose ecmascript-6 database-schema


    【解决方案1】:

    您正在混合 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';
    

    【讨论】:

    • 知道了。谢谢。
    猜你喜欢
    • 2021-10-03
    • 2021-11-07
    • 2019-10-06
    • 2020-03-05
    • 1970-01-01
    • 2020-12-24
    • 2020-04-29
    • 2021-11-02
    相关资源
    最近更新 更多