mysql - babel 为何在 Sequelize 中不起作用

标签 mysql node.js ecmascript-6 sequelize.js babeljs

我目前使用以下代码来检索 Node Express 4.x 中的数据。但是有一个问题让我困惑

//models/User/User.js
import allUserName from './functions/allUserName';
module.export = function (sequelize,DataTypes){
    const User = sequelize.define('User',{
     id:......,
     ..........},{
     tableName:'user',
     classMethods:{
           associate:function(models){
           //assocoation.....},
           allUserName:allUserName(this)
     }
   return User;
}

//in models/User/functions/allUserName.js
    export default async function(model){
          //some code 
          return result;
    }
//in app.js
import models from '../../models/';
const user = require('express').Router();
user.get(...........,async function(req,res){
   let list = await models.User.allUserName(models.User);
    if(list){
        res.status(200).send(list);
    }else{
        res.sendStatus(500)
    }
})

当我在 bash 中使用 babel lib -d distnode ./dist/app.js 时,我看到如下错误:

 /root/api/lib/models/User/User.js:8
 import allUserID  from './functions/allUserID';
 ^^^^^^
 SyntaxError: Unexpected token import
 at createScript (vm.js:53:10)
 .....

如果我将 import 更改为 const

  const allUserName = require(....);
//no error but app.js says models.User.allUserName is not a function...

但是如果我更改为以下代码,它就可以正常工作!

    module.export = function (sequelize,DataTypes){
    const User = sequelize.define('User',{
     id:......,
     ..........},{
     tableName:'user',
     classMethods:{
           associate:function(models){
           //assocoation.....},
           allUserName:async function(){
              let list = await this.findAll({...})
              return list;
           }
     }
   return User;
}

谁能告诉我为什么会发生这个错误?我安装了babel和相关插件,其他功能都工作正常,直到我用这种方式编写用户模型。

最佳答案

看起来,您已将预设添加到 .babelrc,但没有使用 npm 安装它们。请使用以下命令安装相关预设:

npm install babel-preset-<your preset> --save-dev

此外,请使用 npm 脚本使用 babel,在脚本下的 package.json 中添加以下行。

"build": "babel lib -d dist"

并像 npm run build 一样使用它,因为 babel 已安装在您的项目中,并且您的操作系统不知道 babel。所以只有npm可以访问babel。因此,我们将要求 npm 使用 npm 脚本运行 babel 命令。

引用: Using Babel

注意:请使用命令 npm install babel-cli --save-dev 安装 babel,将其保存为开发依赖项并本地保存到您的项目中。

While you can install Babel CLI globally on your machine, it’s much better to install it locally project by project.

关于mysql - babel 为何在 Sequelize 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45930486/

相关文章:

javascript - 如何细化 Flow 中的综合事件?

javascript - 制作全局函数来访问vuex store

javascript - 如何查询orchestrate.io

javascript - 带 Mongoose 的 MongoDB - 在哪里放置语法以确保跨多个字段的索引?

javascript - 为什么我的 instanceof 运算符不响应 true?

mysql - 两步 SQL 查询..似乎有问题

mysql - 使用内部连接更新多个表中的列

php - 尝试从数据库 jquery 检索用户名

MySQL删除字符串中的多个0?

mysql - 从 Sequelize 中的其他表查找计数