我目前使用以下代码来检索 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)
.....
如果我将 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/