我使用节点版本16.14.2,并尝试在我的项目中使用ES模块。在我的package.json下面。
{
"name": "community",
"version": "0.0.1",
"description": "community",
"main": "index.js",
"type": "module",
"scripts": {
"start": "nodemon server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"dotenv": "^16.0.0",
"express": "^4.17.3",
"express-async-handler": "^1.2.0",
"jsonwebtoken": "^8.5.1",
"mysql": "^2.18.1",
"mysql2": "^2.3.3",
"nodemon": "^2.0.15",
"sequelize": "^6.19.0"
},
"devDependencies": {
"sequelize-cli": "^6.4.1"
}
}
我将后缀用于ORM,并使用Sequelize生成模型。我的models/userModel.js模型
'use strict';
const {
Model
} = require('sequelize');
module.exports = (sequelize, DataTypes) => {
class User extends Model {
static associate(models) {
}
}
User.init({
email: DataTypes.STRING,
password: DataTypes.STRING,
}, {
sequelize,
modelName: 'User',
});
return User;
};
这是我的controllers/userController.js
import User from '../models/userModel.js'
import asyncHandler from 'express-async-handler'
import generateToken from '../utils/generateToken.js'
const registerUser = asyncHandler(async(req, res) => {
const { first_name, last_name, email, password } = req.body
const userExists = await User.findOne({
where: { email: email },
order: [ [ 'createdAt', 'DESC' ]],
});
res.send('ok', userExists);
})
我试过这样做:
(A)在我的控制器上使用.I导入
import User from '../models/userModel.js'
但是我得到了一个错误
SyntaxError:请求的模块‘./model/userModel.js’不提供名为“default”的导出。
b)。因此,我将我的模型更改为类似于此(使用导入和导出默认值)
'use strict';
import { Model } from 'sequelize'
const userModel = (sequelize, DataTypes) => {
class User extends Model {
static associate(models) {
}
}
User.init({
email: DataTypes.STRING,
password: DataTypes.STRING,
}, {
sequelize,
modelName: 'User',
});
return User;
};
export default userModel;
我在服务器上没有任何错误,但是当我试图收集数据(注册用户)时,我在我的邮递员上会出现错误。
“消息”:"User.findOne不是一个函数“,
“堆栈”:"TypeError: User.findOne不是函数\n..。
谢谢。
发布于 2022-04-15 05:55:52
如何在一个项目中使用需求和环境管理?
别这样。这样会弄得一团糟。在遗留项目中不工作时使用现代模块语法。
我为ORM使用Sequelize,我使用sequelize生成模型。
sequelize-auto
命令支持a -l esm
parameter生成ES6 ESM模块。
https://stackoverflow.com/questions/71884616
复制