console.log 不是 nodejs fs.readfile 中的函数

Posted

技术标签:

【中文标题】console.log 不是 nodejs fs.readfile 中的函数【英文标题】:console.log is not a function in nodejs fs.readfile 【发布时间】:2019-05-10 11:07:33 【问题描述】:

我正在平静地学习 nodejs。 我正在学习 fs.readFile。 所以为了练习,我做了一个简单的代码。

var list;
fs.readFile('list.txt', 'utf8', function(err, data)
list=data;
);

但是当我得到列表的值时, 它是“未定义的”。

所以,我试着像这样控制数据的价值

var list;
fs.readFile('list.txt', 'utf8', function(err, data)
list=data;
console.log(data);
);

问题开始了。 我得到了错误, 类型错误:console.log 不是函数。

所以,我检查了很多问题,例如 this 或 this...

但我找不到我的问题的答案。

为什么会发生此错误,我该如何阻止这种情况发生?

完整代码是

var http = require('http');
var fs = require('fs');
var url = require('url');
  var printconsole="";
function console(data)
  return "<script>console.log(\""+data+"\");</script>";

  var app = http.createServer(function(request,response)
  var template;
    var _url = request.url;
    var queryData = url.parse(_url, true).query;
    var title = queryData.id;
    var main;
    var list;
    fs.readFile('list.txt', 'utf8', function(err, data)
        console.log("data");
        list=data;
    );
    fs.readFile(`$queryData.id.txt`, 'utf8', function(err, data) 
        main=data;
    );
    if(_url == '/')
      title = 'Web';
      main = `world wide web`;
    
    if(_url == '/favicon.ico')
      return response.writeHead(404);
    
    response.writeHead(200);
    template = `
    <!doctype html>
    <html>
    <head>
      <style>
        body
          width:-webkit-fill-availble;
          height:-webkit-fill-availble;
        
        header
          width:100%;
          height:10%;
          border-bottom:1px solid #111111;
        
        aside
          width:10%;
          height:560px;
          border-right:1px solid #111111;
          float:left;
        
        article
          width:85%;
          height:85%;
        
      </style>
      <meta charset="utf-8">
    </head>
    <body>
          <header><h1>$title</h1></header>
          <aside>$list</aside>
           <article>$main</article>
        </body>
    </html>
    `;
    response.end(template);
);

app.listen(3000);

【问题讨论】:

这是完整的程序吗?如果还有更多您没有分享,请edit 并提供minimal reproducible example,因为这不会重现您所描述的问题。 @Patrick Roberts 已编辑!感谢您的帮助 您的问题是将console 定义为一个函数。 console.log() 已经是内置函数,console 是内置对象。如果您定义了该函数,那么您将在该范围内隐藏内置函数,这会导致该错误发生。 【参考方案1】:
function console(data)
  return "<script>console.log(\""+data+"\");</script>";

您用自己的函数覆盖了console,该函数没有log 属性。

【讨论】:

aha....我忘记了函数的名称不能是控制台之类的东西。感谢您的帮助【参考方案2】:

函数的名称不应该是 console、for、if 等

function console(data)
  return "<script>console.log(\""+data+"\");</script>";

是问题所在。你应该改变它的名字。

【讨论】:

以上是关于console.log 不是 nodejs fs.readfile 中的函数的主要内容,如果未能解决你的问题,请参考以下文章

nodejs异步案例

nodejs fs读取静态json文件

nodejs回调函数

NodeJS 阻塞/非阻塞

nodejs fs 和 path

NodeJs入门学习笔记