如何正确调用fs.writeFile

时间:2017-03-08 15:18:57

标签: javascript angularjs node.js writefile

我无法弄清楚如何在JSON文件上写。 我正在使用单一应用程序页面,主要使用AngularJS和Node.js

这是我的代码:

- index.html--

<script type="text/ng-template" id="pages/Animazione.html">
    ...
    <td><input id="clickMe" type="button" value="clickme" ng-click="doPost()" /></td>

- app.js -

var App = angular.module('myMovie', ['ngRoute']);
...
.when('/Animazione', {
        templateUrl : 'pages/Animazione.html',
        controller  : 'AnimazioneController'}
     )
...
App.controller('AnimazioneController', ['$scope','$http', function($scope, $http) {

                    $http.get('Animazione.json').success(function(response)
                    {
                        $scope.myData=response;
                    })
                    .error(function()
                    { 
                        alert("Si è verificato un errore!"); 
                    });


                    $scope.doPost = function()
                {
                    writeOutputFile({test: 1});
                };


}]);

- index.js--(服务器)

function writeOutputFile(data, success, fail) {
  var fs = require('fs');
  fs.writeFile('auth.json', JSON.stringify(data), function(error) {
    if(error) { 
      console.log('[write output]: ' + err);
        if (fail)
          fail(error);
    } else {
      console.log('[write output]: success');
        if (success)
          success();
    }
  });
}

是否有任何电话或任何功能我做错了?

1 个答案:

答案 0 :(得分:2)

据我所知,你不能通过客户端直接调用服务器中的函数。

为此,在服务器中定义和终止点,并从客户端调用该终点。在服务器中该端点的处理程序内部调用您的函数来写入文件。

例如:在服务器定义/writefile端点如下(在服务器端使用express)将以下内容添加到index.js

var express = require('express');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var fs = require('fs');
var http = require('http');
var cors = require('cors');

var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(cors());

app.post('/writefile', function(req, res) {
    var fileData = req.body.fileContent;
    fs.writeFile('message.txt', fileData , function(err) {
      if (err) {
         res.status(500).jsonp({ error: 'Failed to write file' });
      }
      res.send("File write success");
    });
});

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

var port = 3000;

app.set('port', port);
var server = http.createServer(app);

server.listen(port);

现在您的服务器在3000端口运行。

在客户端:

$http({
   method: 'POST',
   url: 'http://localhost:3000/writefile', // Assuming your running your node server in local
   data: { "fileContent": {"test": 1} } // Content which needs to be written to the file 'message.txt'
}).then(function(){
   // Success
}, 
function(error) {
   //error handler
   console.error("Error occured::",error);
});