Meteor.js CircleCI集成在linting上失败

时间:2016-08-19 03:17:16

标签: testing meteor circleci

我试图让CircleCI运行失败的测试,但是通过在服务器和客户端上运行,它在Meteor的工作方式上失败了。某些代码只应在服务器或客户端上运行。当您尝试在任何其他块内导入时,Lint失败:

...
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

显然这不符合Meteor这样做的方式,因为这是在meteor / todo应用程序中,并且工作正常。

如何绕过CircleCI linting检查,或将其更改为警告项目?

1 个答案:

答案 0 :(得分:1)

Eslint解析器不接受Meteor嵌套导入语法,因为ES6规范也不允许。详见here。有两种方法可以解决这个问题:使用allowImportExportEverywhere选项切换到支持此语法的babel-eslint解析器。您需要像这样修改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
}

这些选项中的任何一个都应该使得lint在CircleCI上传递。如果您打算在CircleCI中使用它,我也建议setting up linting in your editor