从angular度控制器发布到节点
好吧,我不明白这是怎么回事,在本地工作,但不在我的服务器上。
我有一个angular度控制器发布到我的节点服务器。
每次我尝试运行触发我得到的post的function
POST http://www.mysite.co.uk/mm3/back-end/savephotos 404(未find)
我真的失去了,我改写了5次我找不到问题。
如果有人可以看到哪里出错了,请帮忙。
angular度控制器
MM3 \ JS \ controller.js
//all photos've been pushed now sending it to back end $timeout(function () { $http.post('back-end/savephoto', $scope.photosToPhp).then(function (success) { $scope.generating = false; $scope.generateBtn = 'Generate'; //creating mock up gallery for (var x = 0; x < success.data.photos; x++) { var file = '/mm3/tmp/' + success.data.folder + "/out" + x + ".png"; $scope.gallery.push(file); } $scope.photosToPhp = []; }, function (error) { }); }, 800);
然后我的节点后端
更新:所以我在我的函数中添加了一些控制台日志,以查看它出错的地方以及它到达的位置。 我不断收到:
testing1function启动错误保存照片
MM3 \后端\ controller.js
app.post('/mm3/back-end/savePhoto', function (req, res) { console.log('test 1 function started'); var folder = Math.random().toString(36).substr(2, 20); var photos = req.body; var counts = 0; var callback = function(counts){ if(counts < photos.length){ saveBase64(photos[counts],folder,counts,callback); console.log('test 2 save photo'); }else{ var counts = 0; var response = {"folder":folder, "photos": photos.length}; console.log('test 3 save photo else'); res.send(response) } }; saveBase64(photos[counts],folder,counts,callback); }); app.post('/mm3/downloadZip', function(req, res){ var photos = req.body; var out = photos[0]; var test = out.split('/'); var loc = test.pop(); var end = test.join('/'); console.log('test 3 function Generate zip file'); console.log(end); var outName = '/' + end +'/mm3/MockUp.zip'; var output = fs.createWriteStream(outName); var archive = archiver('zip', {store: true }); var zip = function(photos, f){ for(var t = 0; t < photos.length; t++){ var file = 'mockUp'+ t +'.jpg'; var from = '/var/www/html' + photos[t]; archive.file( from, { name: file }); } f(); }; output.on('close', function() { var photos = req.body; var out = photos[0]; var test = out.split('/'); var loc = test.pop(); var end = test.join('/'); res.send(end + '/MockUp.zip'); console.log('archiver has been finalized and the output file descriptor has closed.'); }); archive.on('error', function(err) { throw err; }); archive.pipe(output); zip(photos, f); function f(){ archive.finalize(); } }); function saveBase64(photo,folder, counts, callback){ var result = photo.split(',')[1]; var path = '/mm3/tmp/' + folder; var filename = path + "/out"+ counts + ".png"; mkdirp( path, function() { fs.writeFile(filename, result, 'base64', function(error){ if (error) { console.log('error saving photo'); }else{ console.log('photo saved'); counts ++; callback(counts); } }); }); }
我认为这是问题:
app.post('back-end/savephoto', function (req, res) { // skipped some lines });
改变它
app.post('/back-end/savephoto', function (req, res) { // skipped some lines });
在Angular中,下面是:
$http.post('back-end/savephoto......
变为:
$http.post('/back-end/savephoto.....
在Node中,如下所示:
app.post('back-end/savephoto.....
变为:
app.post('back-end/savephoto....
然后,你需要在Nodepath下添加一个console.log来查看它是否被执行。 这将缩小它。 另外,您可以在超时之外删除$ http.post调用,以消除显而易见的情况。
让我知道你是怎么办的。
傻眼