Eslint在Travis CI中失败,但不在本地

我有一个通过Travis CI的GitHub 项目 。 在创build新function的拉取请求后 ,由于两个Eslint错误,Travis CI 不能同时推出pr和push:

/home/travis/build/enove/Thriver/packages/thriver-accounts/lib/accounts.js 121:5 error Strings must use singlequote quotes 122:5 error Strings must use singlequote quotes 

accounts.js 119到122行如下:

 119: return `Hello ${user.profile.firstname}!\n\n` + 120: `To verify your account email, simply click the link below.\n\n${url}\n\n` + 121: `If you weren't expecting this email, simply delete it.\n\n` + 122: `Thanks!\n\nAll of us at WCASA`; 

提交甚至没有改变accounts.js ,并且本地eslint没有错误地传递。 我检查并validation了节点,npm和meteor的版本与Travis CI中的版本相同。

Travis CI的configuration如下:

 { "sudo": "required", "language": "node_js", "node_js": "4.1.1", "before_install": [ "curl -L https://git.io/ejPSng | /bin/sh" ], "env": "CXX=g++-4.8", "addons": { "apt": { "sources": [ "ubuntu-toolchain-r-test" ], "packages": [ "g++-4.8" ] } }, "services": "mongodb", "script": [ "meteor npm run lint" ], "group": "stable", "dist": "precise", "os": "linux" } 

.eslintrc如下:

 { "parser": "babel-eslint", "parserOptions": { "ecmaVersion": 6, "ecmaFeatures": { "impliedStrict": true } }, "env": { "browser": true, "node": true, "mongo": true, "meteor": true }, "extends": [ "airbnb" //"plugin:meteor/recommended" ], "globals": { "Thriver": true, "SimpleSchema": true, "Marked": true, "SHA256": true, "google": true, "geoXML3": true, "AutoForm": true, "details_shim": true }, "rules": { "no-underscore-dangle": 0, "new-cap": 0 } } 

这在以前发生在不同的文件中,我通过eslint忽略这一行来“解决”了这个问题。 但是我不能解决所有的问题。 有什么build议?

http://eslint.org/docs/rules/quotes

这很可能是解决您的问题的方法。

JavaScript允许您使用三种方法之一定义string:双引号,单引号和反引号(从ECMAScript 6开始)。 例如:

 /*eslint-env es6*/ var double = "double"; var single = 'single'; var backtick = `backtick`; // ES6 only 

如何在代码库中定义string的select是模板文字(它允许embedded的expression式被解释)之外的文体。 许多代码库需要以一致的方式定义string。

我会尝试设置这些规则之一,并再次运行testing。

让我知道如果这不能解决你的问题!

我仍然不知道如何通过本地传递。 也许我是在eslint或airbnb版本后面。 但是,我意识到线路确实需要更正。 底部的两行代码不应该使用back ticks,因为这些string中没有任何variables。

 119: return `Hello ${user.profile.firstname}!\n\n` + 120: `To verify your account email, simply click the link below.\n\n${url}\n\n` + 121: 'If you weren\'t expecting this email, simply delete it.\n\n' + 122: 'Thanks!\n\nAll of us at WCASA'; 

Eslint对于不同样式的连接string比一致的string更快乐,因为不是每个字段都包含一个variables。