为什么不能覆盖文件(fs node.js)?

时间:2016-05-19 08:05:24

标签: node.js file syntax-error overwrite fs

我想在特定操作之前创建配置文件。所以这意味着我在我的文件夹中创建了一个配置文件,首先不包含任何内容。

然后我运行以下代码:

db.getData(function(err,data) { //it's an dynamodb don't know if this matter
    var entry = {
        dataItems: data.Items[0].items,
        timestamp: data.LastEvaluatedKey.timestamp.N
    };

    try {
        fs.writeFile("./config", JSON.stringify(entry), function (err) {
            if(err) {
                throw new Error(err);
            }
            callback(); //want to know when file is filled with data
        });

    } catch (err) {
        throw err;
    }
});

该文件现在有内容。但是我不想在每次执行此函数之前清除文件,它应该被覆盖。如果我再次运行此代码,我会收到一条错误消息:

function (exports, require, module, __filename, __dirname) { {"data":{"S":"[{\
                                                                      ^^^^^^
SyntaxError: Unexpected token :

所以对象是我的db中的代码之前在代码中编写的响应。我清除文件来测试这是否是一个问题,试图覆盖并再次运行代码,一切都很好。

我正在研究什么可能是我的问题,但我发现的唯一一件事是人们试图避免覆盖他们的文件,所以我想我写错了这个文件导致覆盖似乎是标准的而不是特殊的任务要做。 this网站显示了如何使用fs.writeFile,我看不出与我的不同之处:

1 个答案:

答案 0 :(得分:1)

我已经模拟了db.getData函数以返回有效数据并且它正在运行。

var fs = require('fs');

var db = {
  getData: function(callback) {
    var data = {"Items": [{"items": "entry"}], "LastEvaluatedKey": {"timestamp": {"N": 12323234}}};
    callback(null, data);
  }
}

var callback = () => console.log("It worked");

db.getData(function(err,data) { //it's an dynamodb don't know if this matter
    var entry = {
      dataItems: data.Items[0].items,
      timestamp: data.LastEvaluatedKey.timestamp.N
    };

  try {
      fs.writeFile("./config", JSON.stringify(entry), function (err) {
          if(err) {
              throw new Error(err);
          }
          callback(); //want to know when file is filled with data
      });

  } catch (err) {
      throw err;
  }
});

似乎您的数据可能无法正确序列化?这也可以解释口译员对Unexpected token :

抱怨的内容