- Error: [$injector:modulerr]
- Error: [$injector:unpr] 控制器注入失败
$injector:nomod 错误
通常出现这个错误是因为angular.module定义时写法错误;
检查是否有[],或者是否多次定义同一个module;
标准定义 angular.module(‘1yd.config’,[])
加上[]表示定义,没有[]表示引用;Error: [$injector:undef] factory的service必须返回一个对象
-
http().successisnotafunc…查看了相关文档,原来在angular1.x的高版本中,
http promise的方法的success和error方法已经被弃用了,转为标准的then方法。
angularjs1.x api - v8要开始移除对arguments的支持了,最好开始使用es6中的参数省略和默认的形式
function (type="text",...items)
- $http的标准定义形式:
angular.module('cmsService').factory('commonService',['$http',($http)=>{
let service = {}
let userModel = {
login_info :{},
logPath: '',
client_version: '1.0.0',
get_log_path: ()=>logPath,
set_user_info:(arg)=>{login_info = JSON.parse(arg)},
get_user_info:()=>login_info,
get_client_version:()=>client_version,
setAutoMove:(state)=>{aotuMove = state},
getAutoMove:()=>autoMove,
resetLoginInfo:()=>{login_info = {}}
}
service.cms = userModel;
service.log = (...items)=>{
let date = new Date();
let output = "["+date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds()+"]"
for(let i = 0, len = items.length; i < len; i++){//标记2
if(typeof items[i] == "object"){
output += JSON.stringify(items[i])
}else{
output +=String(items[i]);
}
// output+="\r\n";
}
console.log(`output${output}`);
service.cmsFilelog(output)
}
service.cmsFilelog=(output)=>{
$http({
url:'/common/log',//标记1
method:'POST',
data:{output:output}
}).then((res)=>{
console.log();
},(res)=>{
console.log();
})
}
return service;
}])
在标记1处url可以自己设计。’/common/log’的实现是这样的:
var common = require('../routes/common')
app.use('/common', common);
其中common.js文件:
router.post('/log',function(req,res){})
这两个地方组合成了$http中的/common/log;
另外,如果这里的url是跨域的,比如:
service.cmsFilelog=(output)=>{
$http({
url:'https://angularjs.org/doesntexist&callback=JSON_CALLBACK',
method:'JSONP',
data:{output:output}
}).then((res)=>{
console.log();
},(res)=>{
console.log();
})
}
注意method是JSONP.
to be continue…