2016-08-19 27 views
0

CircleCIにlintingの失敗をテストさせようとしていますが、Meteorが動作する方法ではサーバとクライアントの両方で動作しません。一部のコードは、サーバーまたはクライアント上でのみ実行する必要があります。Meteor.js lintingでCircleCIの統合に失敗しました

... 
import { Meteor } from 'meteor/meteor'; 
import { _ } from 'meteor/underscore'; 
import { DDP } from 'meteor/ddp-client'; 

if (Meteor.isServer) { 
    import './server/publications.coffee'; 
... 

を次のエラーで:

/home/ubuntu/todos/imports/api/lists/lists.tests.js 
    16:3 error Parsing error: 'import' and 'export' may only appear at the top level 

明らかにこれは、これを行うための流星の道に沿っていない。このことから、あなたが他のブロックの内部でインポートを実行しようとするときリントが失敗します流星/流行のアプリにあり、うまく動作します。

CircleCI糸くずれ検査をバイパスするか、これを警告項目に変更しますか?

答えて

1

Eslintパーサーは、ES6仕様でもそれを許可していないため、Meteorネストされたインポート構文を受け入れません。詳細hereを参照してください。これを回避するには2つの方法があります:パーサーに切り替えて、allowImportExportEverywhereオプションでこの構文をサポートするか、あなたはこのようなあなたのpackage.jsonを変更する必要があります

"devDependencies": { 
    ... 
    "babel-eslint": "^5.0.4" 
}, 
"eslintConfig": { 
    "parser": "babel-eslint", 
    "parserOptions": { 
    "sourceType": "module", 
    "allowImportExportEverywhere": false 
    }, 
} 
... 

またあなたは、単に条件付きで昔ながらの方法ファイルを含めるようにrequireを使用することができます。これらのオプションのどちらかが、糸くずのパスをしなければならない

if (Meteor.isServer) { 
    require('./server/publications.coffee'); // eslint-disable-line global-require 
} 

をCircleCIでCircleCIで使用する予定がある場合は、setting up linting in your editorもお勧めします。

関連する問題