我正在使用yeoman的angular-fullstack生成器构建一个脚手架。
到目前为止,我们在开发版本上一直没有问题(grunt serve
没有问题)。现在我们已准备好进入生产阶段,因此我一直在尝试使用grunt build
构建分发。我们正在使用grunt的0.4.5版本。
然而,app.js
中生成的dist/.tmp/concat/app/
文件包含原始文件中不存在的错误。
构建执行的任务由Gruntfile.js
的以下部分确定:
grunt.registerTask('build', [
'clean:dist',
'injector:less',
'concurrent:dist',
'injector',
'wiredep',
'useminPrepare',
'autoprefixer',
'ngtemplates',
'concat',
'ngAnnotate',
[...]
在构建到达ngAnnotate
之前,一切正常。那时我收到以下错误:
error: couldn't process source due to parse error
解析错误的来源来自以下问题。
原始app.js
包含工厂:
.factory('authInterceptor', function ($rootScope, $q, $cookieStore, $location) {
return {
// Add authorization token to headers
request: function (config) {
config.headers = config.headers || {};
if ($cookieStore.get('token')) {
config.headers.Authorization = 'Bearer ' + $cookieStore.get('token');
}
return config;
},
// Intercept 401s and redirect you to login
responseError: function(response) {
if(response.status === 401) {
$location.path('/login');
// remove any stale tokens
$cookieStore.remove('token');
return $q.reject(response);
}
else {
return $q.reject(response);
}
}
};
})
但是构建的第一步生成的相应代码片段如下:
(function() {
function authInterceptor($rootScope, $q, $cookies, $location, Util) {
return {
// Add authorization token to headers
request(config) {
config.headers = config.headers || {};
if ($cookies.get('token') && Util.isSameOrigin(config.url)) {
config.headers.Authorization = 'Bearer ' + $cookies.get('token');
}
return config;
},
// Intercept 401s and redirect you to login
responseError(response) {
if (response.status === 401) {
$location.path('/login');
// remove any stale tokens
$cookies.remove('token');
}
return $q.reject(response);
}
};
}
angular.module('insuranceAppApp.auth')
.factory('authInterceptor', authInterceptor);
})();
我已经尝试了一段时间来了解构建行为不端的地方。但我是个笨蛋的绝对初学者。
有没有人遇到过类似的问题? 有没有人知道可能是问题的根源?