当变量是函数参数时,应用抛出变量引用错误



我正在MEAN堆栈中构建后端,并遇到了一个问题。这个应用程序的要点很简单:上传一个文件,它就会把它保存到服务器上。然而,我偶然发现了一个问题。当我点击"Submit"按钮时,代码中断并在控制台上抛出以下错误:

<h1>photo is not defined</h1>
<h2></h2>
<pre>ReferenceError: photo is not defined
    at routesindex.js:32:3
    at Layer.handle [as handle_request] (node_modulesexpresslibrouterlayer.js:95:5)
    at next (node_modulesexpresslibrouterroute.js:131:13)
    at node_modulesexpress-jwtlibindex.js:112:9
    at node_modulesjsonwebtokenindex.js:98:18
    at process._tickCallback (node.js:355:11)</pre>

以下是我的angularApp.js文件:

app.factory('photos', ['$http', 'auth', function($http, auth){
  var o = { photos: [] };
  o.create = function(photo) {
    return $http.post('/photos', photo, {
      headers: {Authorization: 'Bearer '+auth.getToken()}
    }).success(function(data){
      o.photos.push(data);
    }).error(function(a) {
      console.log(a);
    });
  };
  return o;
}]);
app.controller('MainCtrl', [
'$scope',
'photos',
'auth',
function($scope, photos, auth){
  $scope.photos = photos.photos;
  $scope.addPhoto = function(){
    photos.create();
  };
}]);

index.ejs代码:

<form ng-submit="addPhoto()">
  <label for="exampleInputFile">File input</label>
  <input type="file" id="exampleInputFile">
  <button type="submit" class="btn btn-primary">Post</button>
</form>

routesindex.js

router.post('/photos', auth, function(req, res, next) {
  var dirname = require('path').dirname(__dirname);
  var filename = req.files.file.name;
  var path = req.files.file.path;
  var type = req.files.file.mimetype;
  var read_stream = fs.createReadStream(dirname + '/' + path);
  var conn = req.conn;
  var Grid = require('gridfs-stream');
  Grid.mongo = mongoose.mongo;
  var gfs = Grid(conn.db);
  var writestream = gfs.createWriteStream({
    filename: filename
  });
  read_stream.pipe(writestream);
  photo.save(function(err, photo){
    if(err){ return next(err); }
    res.json(photo);
  });
});

我所理解的是,代码中断运行o.create函数,但我不确定为什么它无法找到photo,当这是函数参数之一。

对于您为routes/index.js发布的代码,

photo.save(...

使用的变量photo之前没有在当前或任何父作用域中定义。

相关内容

  • 没有找到相关文章

最新更新