2016-12-01 46 views
2

我有一个GitHub project已通过Travis CI。在创建一个pull request的一个新功能,特拉维斯CI fails既公关,推动得益于两个eslint错误:eslint特拉维斯CI失败,但本地

/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 

线119通过accounts.js 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没有错误地通过。我检查并验证了节点,npm和流星的版本与Travis CI中的版本相同。

的特拉维斯CI配置如下:

{ 
    "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“解决”的问题忽略该行。但是我不能为每个神秘问题都这么做。有什么建议?

回答

0

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

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是快乐了很多具有不同风格一个连接字符串不是一致的一个地方不是每个段包含的变量。

0

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

这是最有可能修复您的问题。

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

/*eslint-env es6*/ 

var double = "double"; 
var single = 'single'; 
var backtick = `backtick`; // ES6 only 

如何定义在基本代码串的选择是模板文字的文体一个外侧(其允许嵌入表达式来解释)。许多代码库需要以一致的方式定义字符串。

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

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

+0

感谢您的回复。我在我的文章中添加了'.eslintrc'的内容。我正在使用airbnb风格指南,它允许单向和反向字符串。此外,eslint通过本地。它只是没有通过特拉维斯CI。 –