繁体   English   中英

如何将字符串 output 从模块写入单独的 node.js 文件中的文件

[英]How can I write the string output from a module to a file in a separate node.js file

我刚刚开始学习 node.js(实际上是我的第二个任务),我需要编写两个模块(一个用于 100 以下的素数,一个用于 50 以下的偶数 - 这是一个单独的要求)。 下一个要求是我将这些模块导入 node.js 文件并将结果写入“nums.txt”文件。 如果我直接将字符串写入文件并对其运行测试,它会完美执行,但是当我尝试将 Array.toString() 写入文件时,我得到

TypeError [ERR_INVALID_ARG_TYPE]:“数据”参数必须是字符串类型或 Buffer、TypedArray 或 DataView 的实例。 接收类型 function([功能(匿名)])

我错过了什么? 我已经阅读了此处的大多数问题,阅读了文档并尝试了从更改模块返回语句到尝试在文件处理程序中添加 toString 的所有方法。

这些是模块:

exports.primes = () => {
  const isPrime = () => {
    let sieve = [],
      i,
      j,
      n = 100,
      primeArr = [];

    for (i = 2; i < n; ++i) {
      if (!sieve[i]) {
        primeArr.push(i);
        for (j = i << 1; j <= n; j += i) {
          sieve[j] = true;
        }
      }
    }
    console.log(primeArr);
    return primeArr.toString();
  };
  isPrime();
};

exports.evenNums = () => {
  const isEven = () => {
    let n = 50;
    let evenArr = [];
    if (n === 1 || n === 0) {
      return false;
    }
    for (let i = 2; i <= n; ++i) {
      if (i % 2 === 0) {
        //console.log(i);
        evenArr.push(i);
      }
    }
    return evenArr.toString();
  };
  isEven();
};

我的 Node.js 档案

const primeN = require("./primes");
const evenN = require("./evenNums");
const fileHandler = require("fs");
const http = require("http");

const prime = primeN.primes();
const even = evenN.evenNums();
fileHandler.writeFile("nums.txt", prime, (err) => {
  if (err) {
    console.log("File not written\n");
  } else {
    console.log("File written successfully\n");
    console.log("The file has the following contents:");
    console.log(fileHandler.readFileSync("nums.txt"));
  }
  fileHandler.appendFile("nums.txt", even, (err) => {
    if (err) {
      console.log("File not written\n");
    } else {
      console.log("File written successfully\n");
      console.log("The file has the following contents:");
      console.log(fileHandler.readFileSync("nums.txt"));
    }
  });
});

http
  .createServer(function(req, res) {
    res.write("nums.txt");
    res.end();
  })
  .listen(8000);

我只知道我缺少的东西很简单,但我似乎无法弄清楚。 任何有关调试 Node.js 的提示也将不胜感激。

primes function 内部有一个 function。即使isPrime返回字符串,但primes function 返回undefined

exports.primes = () => {
  const isPrime = () => {
    let sieve = [],
      i,
      j,
      n = 100,
      primeArr = [];

    for (i = 2; i < n; ++i) {
      if (!sieve[i]) {
        primeArr.push(i);
        for (j = i << 1; j <= n; j += i) {
          sieve[j] = true;
        }
      }
    }
    console.log(primeArr);
    return primeArr.toString();
  };
  
  // return value from isPrime
  return isPrime();
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM