web-dev-qa-db-ja.com

ava:SyntaxError:予期しないトークンのインポート

そのため、avaには ES2015の組み込みサポート が付属しています。これは、実際のテストファイルでは問題なく機能します。しかし、私がするとき

import {newUser, createUser, login} from './helpers/user';

importを使用してヘルパーファイルにエクスポートできないので、次のように取得します。

Users/rowe/Code/fv/foxvision-api/test/api/helpers/user.js:1
(function (exports, require, module, __filename, __dirname) { import request from 'supertest';

SyntaxError: Unexpected token import

そのまま使用できるテストファイルについては、特定のバベル構成を設定していません。ヘルパーの依存関係がバベルで解決されない理由を誰かに説明できますか? test/**/helpersの使用は ava規則 にも従います。

ありがとう、ロビン

ソリューション

だから thangngoc89 の解決策に基づいて、それを機能させるために私がやったことは:

  1. .babelrcとコンテンツを追加:
{
  "presets": [
    "es2015",
    "stage-2"
  ],
  "plugins": [
    "espower",
    "transform-runtime"
  ]
}
  1. package.jsonに追加:
"ava": {
  "require": ["babel-register"],
  "babel": "inherit"
}
28
rweng

AVAはテストファイルのみをトランスパイルします。依存関係をテストしないので、プロジェクトでbabelをセットアップする必要があります(とにかくES6を使用しているため、そうしたはずです)。

次に、AVAの設定で、これを追加します。

"ava" {
  ...
  "babel": "inherit"
}

つまり、プロジェクトのバベル設定を使用して、テストの依存関係をトランスパイルします。 AVAのドキュメントで詳細をご覧ください: https://github.com/sindresorhus/ava/blob/master/docs/recipes/babelrc.md

20
thangngoc89

rweng を使用すると、私のソリューションは少し単純になります。

  1. .babelrc
{
  "presets": [
    "es2015"
  ],
  "plugins": [
    "transform-runtime"
  ]
}
  1. package.json
"ava": {
  "require": ["babel-register"],
  "babel": "inherit"
}
2
Jason Kim

残念ながら、私の場合、標準的な解決策は機能しませんでした。これは、ava + quasar + vue project

。babelrc

{
  "presets": [
    "es2017",
    "@ava/stage-4",
    "stage-3"
  ],
  "plugins": [
    "transform-runtime"
  ]
}

package.json

"ava": {
  "require": [
    "babel-register"
  ],
  "babel": "inherit"
},
"scripts": {
  "ava": "NODE_ENV=test ava",
  "test": "ava",
  "test:watch": "ava --watch --verbose"
}

モジュールのインストール

yarn add babel-register babel-preset-es2017 @ava/babel-preset-stage-4 babel-plugin-transform-runtime babel-preset-stage-3 --dev
2
Serge Seletskyy