Express:请求的模块不提供名为“用户”的导出
Posted
技术标签:
【中文标题】Express:请求的模块不提供名为“用户”的导出【英文标题】:Express: The requested module does not provide an export named 'User' 【发布时间】: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 语法。任何建议表示赞赏。
【问题讨论】:
【参考方案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';
【讨论】:
知道了。谢谢。以上是关于Express:请求的模块不提供名为“用户”的导出的主要内容,如果未能解决你的问题,请参考以下文章
节点 --experimental-modules,请求的模块不提供名为的导出
SyntaxError:请求的模块“@notionhq/client”未提供名为“Client”的导出
Express接口综合案例(创建项目配置常用中间件路由设计提取控制器模块配置错误统一处理中间件用户注册的数据验证,密码加密)