【发布时间】: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