2016-08-19 44 views
0

我試圖讓CircleCI運行失敗的測試,但是它通過運行在服務器和客戶端上的方式對Meteor工作方式特有的某些事情失敗。一些代碼只能在服務器或客戶端上運行。Meteor.js CircleCI集成在LINTING上失敗

... 
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解析器不接受Meteor嵌套導入語法,因爲ES6規範不允許它。看詳情here。有兩個選項可以解決這個問題:或者切換到babel-eslint解析器,該解析器支持這種語法,其中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