0

我是 yeoman 的 angular fullstack 新手,并且似乎错误地构建了我的服务器 api 回调。我已经破解了一些代码。我知道这是错误的,但我碰壁了——任何建议都将不胜感激:

例如,如果我进行一个简单的 win32ole iTunes com 调用并返回一个文件路径:

在 client/app/main.controller.js 中的 GET 调用

  $http.get('/api/iTunes/getxmlpath').success(function(path) {
    $scope.myfilepath = path;
  });

路由设置在 server/api/iTunes/index.js

router.get('/getxmlpath', controller.getxmlpath);

server/api/iTunes/iTunes.controller.js 的相关部分

exports.getxmlpath = function(req, res) {
  getWin32OlePath(serviceCallback);
};

function getWin32OlePath() {
  try {
    var win32ole = require('win32ole');
    var iTunesApp = win32ole.client.Dispatch('iTunes.Application');
    var xmlpath = iTunesApp.LibraryXMLPath();
    console.log('got itunes xml path: '+xmlpath);
    return res.json(200, xmlpath);
  } catch (err) {
    return handleError(res, err);
  }
}


/********
error handle the callbacks
**********/
var serviceCallback =
function(response){
  return function(err, obj){
    if(err) {
      response.send(500);
    } else {
        response.send(obj);
      }
    }
  }

咕噜服务器失败

  Error: Route.get() requires callback functions but got a [object Undefined]
4

1 回答 1

0

据我所知,上面的代码可能存在几个问题。我将使用小写的文件名和控制器,itunes而不是iTunes

  1. 您是否在 server/routes.js 中定义了路由和控制器?

    app.use('/api/itunes', require('./api/itunes'));

  2. 在 server/itunes/itunes.controller.js 中,您失去了响应对象的范围,res您可以相应地更改代码:

    exports.getxmlpath = function(req, res) {
      var xmlpath = getWin32OlePath(serviceCallback);
      return res.json(200, xmlpath);
    };
    
    function getWin32OlePath() {
      var xmlpath = ''; // what ever you are doing here
    
      // do the things you need to do in your function
    
      return xmlpath;
    }
    
  3. 你的 server/itunes/index.js 完成了吗?

    'use strict';
    
    var express = require('express');
    var controller = require('./itunes.controller');
    var router = express.Router();
    
    router.get('/getxmlpath', controller.getxmlpath);
    
    module.exports = router;
    

另一个提示:要使用 yeoman 轻松创建工作端点,您可以从终端使用生成器:

yo angular-fullstack:endpoint itunes

angular.fullstack 文档中解释了更多内容:https ://github.com/DaftMonk/generator-angular-fullstack

于 2015-03-05T00:55:57.797 回答