2016-08-19 40 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