我试图让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检查,或将其更改为警告项目?
答案 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。