我正在尝试使用Angular和Browserify构建项目。我的controllers.js
文件看起来像这样......
'use strict';
module.exports.testController = function($scope){
$scope.message = 'Controller 1';
console.log( 'hello' );
};
正如您所料,这会产生三个掉毛错误。
我确实找到了一些解决方案here,它允许JSHint处理Node.js文件,方法是将jslint node: true
放在文件的顶部,如下所示
/*jslint node: true */
'use strict';
module.exports.testController = function($scope){
$scope.message = 'Controller 1';
console.log( 'hello' );
};
然而,这显然修复了太多; 'console.log(...)'应该仍未定义。
有没有人知道如何在Browserify中使用JSHint?
答案 0 :(得分:30)
从版本2.5.3开始,JSHint支持browserify
标志。
与所有标志一样,您可以直接在源文件中使用它:
/*jshint browserify: true */
// browserify code here
或将其添加到.jshintrc
文件中:
{
"browserify": true
}
答案 1 :(得分:3)
我讨厌回答我自己的问题,感觉就像是盗窃,但不过,这就是答案。有两种方法可以为这只特殊的猫提供皮肤,但这个解决方案可能是“正确的” ......
你应该做的第一件事就是修改你的.jshintrc
"globals": {
"define": false
}
变为
"globals": {
"define": false,
"module": false
}
现在你需要像这样修改代码
module.exports = (function(){
'use strict';
var myComponent = {};
myComponent.testController = function($scope){
$scope.message = 'hello';
console.log( 'Hello' );
};
myComponent.testDirective= function($scope){
$scope.message = 'hello';
console.log( 'Hello' );
};
return myComponent;
}());
现在JSHint将显示console.log
的linting错误,但不会显示modules
的linting错误。这是.jshintrc
ammend的礼貌。
修复了use strict
linting错误,我将所有代码包装在函数中。
更进一步,因为我们使用的是browserify,所以我们还需要require()
。所以我需要再次修改.jshintrc
。
"globals": {
"module": false,
"require": false
}
注意:我已从全局变量中删除define
,因为我没有使用它。