【问题标题】:how did babel not working in sequelizebabel 怎么不能在 sequelize 中工作
【发布时间】:2017-08-31 13:56:53
【问题描述】:

我目前使用以下代码在 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 dist 然后 node ./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)
 .....

如果我将导入更改为 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 和相关插件,其他功能都可以正常工作,直到我以这种方式编写用户模型。

【问题讨论】:

  • 你真的使用过 Babel 转译你的文件吗?
  • 是的,我的 babelrc 是 { "presets": ["es2015", "stage-2"], "plugins": [ ["transform-runtime", { "polyfill": false, "regenerator ": 真 }] ] }
  • 你是通过 CLI 转译的吗?
  • 不,我安装了babel-cli,但是我不知道如何通过CLI自动转译,我以后可以试试
  • 你是如何安装babel-cli的?,请分享你一直在使用babel lib -d dist 的命令的结果。最好试试这个,./node_modules/.bin/babel src -d lib。

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


【解决方案1】:

似乎,您已将预设添加到 .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 以将其保存为开发依赖项并本地保存到您的项目中。

虽然您可以在您的机器上全局安装 Babel CLI,但最好逐个项目地在本地安装它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2016-03-27
    相关资源
    最近更新 更多