首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在一个项目中使用需求和esm?

如何在一个项目中使用需求和esm?
EN

Stack Overflow用户
提问于 2022-04-15 13:25:34
回答 1查看 1.2K关注 0票数 0

我使用节点版本16.14.2,并尝试在我的项目中使用ES模块。在我的package.json下面。

代码语言:javascript
代码运行次数:0
运行
复制
{
  "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模型

代码语言:javascript
代码运行次数:0
运行
复制
'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

代码语言:javascript
代码运行次数:0
运行
复制
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导入

代码语言:javascript
代码运行次数:0
运行
复制
import User from '../models/userModel.js'

但是我得到了一个错误

SyntaxError:请求的模块‘./model/userModel.js’不提供名为“default”的导出。

b)。因此,我将我的模型更改为类似于此(使用导入和导出默认值)

代码语言:javascript
代码运行次数:0
运行
复制
'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..。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-04-15 13:55:52

如何在一个项目中使用需求和环境管理?

别这样。这样会弄得一团糟。在遗留项目中不工作时使用现代模块语法。

我为ORM使用Sequelize,我使用sequelize生成模型。

sequelize-auto命令支持a -l esm parameter生成ES6 ESM模块。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71884616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档