2017-08-29 8 views
0

私は現在、以下のコードを使ってNode express 4.xのデータを取得しています。しかし、問題がある、私はbashでbabel lib -d dist、その後node ./dist/app.jsを使用する場合、私はのようなエラーが表示され、私にバーベルはどのようにして後遺症で動作しませんでしたか

//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) 
    } 
}) 

を混乱:私は

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

をCONSTするインポートを変更した場合

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

しかし、私が次のコードに変更すれば、うまく動作します!

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; 
} 

なぜこのエラーが発生するのか教えてください。私はこの方法でUserモデルを書くまで、バベルと関連するプラグインをインストールしました。他の関数はうまくいきます。

+0

実際にファイルをトランスバーリングするためにバベルを使用しましたか? – Li357

+0

はい、私のbabelrcが { "プリセット" である:[ "es2015"、 "ステージ2"]、 "プラグイン":[ [、{ "ポリフィル" "ランタイム変換":偽の、 "再生器" :true }] ] } –

+0

CLI経由でトランシルしましたか? – Li357

答えて

0

プリセットを.babelrcに追加したようですが、npmを使用してプリセットをインストールしませんでした。コマンドを使用して、該当するプリセットをインストールしてください。また

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

を、スクリプトの下であなたのpackage.json内の以下の行を追加し、NPMのスクリプトを使用してバベルを使用してください。

"build": "babel lib -d dist" 

とバベルがプロジェクトにインストールされ、お使いのOSを約babelを知らないので、npm run buildのようにそれを使用しています。だから、npmだけがバベルにアクセスできます。したがって、npmスクリプトを使用してbabelコマンドを実行するようにnpmに依頼します。

参考:Using Babel

注:のdevの依存関係として、ローカルプロジェクトにそれを保存するためのコマンドnpm install babel-cli --save-devとバベルをインストールしてください。

Babel CLIはマシンにグローバルにインストールできますが、プロジェクトごとにローカルにインストールする方がはるかに優れています。

関連する問題