js node.js中的窗口未定义错误

Posted

技术标签:

【中文标题】js node.js中的窗口未定义错误【英文标题】:window is not defined error in js node.js 【发布时间】:2021-08-23 02:07:24 【问题描述】:

我有这个简单的代码:

do 
    var SioNo = window.prompt("Nicholas ha il cancro, si o no?");
 while (SioNo.toLowerCase() != "si" && SioNo.toLowerCase() != "no");

if (SioNo.toLowerCase() == "si") 
    console.log("Hai il cancro lol");

else 
    console.log("ahahahah si come no");

这是我第一次用 js 编码,所以我真的不知道该怎么做,我正在使用 node.js 最新版本和 VSCode

这是错误:

ReferenceError: 未定义窗口

在对象。

在 Module._compile (internal/modules/cjs/loader.js:1068:30)

在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)

在 Module.load (internal/modules/cjs/loader.js:933:32)

在 Function.Module._load (internal/modules/cjs/loader.js:774:14)

在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)

在内部/main/run_main_module.js:17:47

【问题讨论】:

【参考方案1】:

window 只能在浏览器(Chrome、Firefox、Safari 等)中找到。

在没有额外包的情况下使用node 执行上述脚本将不起作用,因为window 变量根本不存在于当前上下文(即您的终端窗口)中。

如果你想在 NodeJS 中做一个提示,它将接受来自终端的用户输入,你可以使用原生包 readline

这是一个使用递归而不是 do...while 循环的解决方案。

const readline = require("readline");

const rl = readline.createInterface(
  input: process.stdin,
  output: process.stdout,
);

function askQuestion() 
  rl.question("Nicholas ha il cancro, si o no?", function (result) 
    if (result.toLowerCase() === "si") 
      console.log("Hai il cancro lol");
      process.exit(1);
     else 
      console.log("ahahahah si come no");
      askQuestion();
    
  );


askQuestion();

由于这是您第一次使用 javascript / NodeJS,我建议您先阅读教程并阅读文档。 https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps.

【讨论】:

【参考方案2】:

其实我是 Node js 的新手,但我已经在寻找原因。我发现 Node.js 中无法识别“window”,因此通过导入此库“react”尝试此解决方案,然后使用变量“window”并查看它是否被识别:

从“反应”导入反应;

阅读本文了解更多详情: https://morioh.com/p/f7b08fe33a67

【讨论】:

以上是关于js node.js中的窗口未定义错误的主要内容,如果未能解决你的问题,请参考以下文章

node.js 中的未定义错误

如何解决 Bootstrap node.js 应用程序中的错误“无法设置未定义的属性 'emulateTransitionEnd'”?

Node.JS JSON.parse 错误未定义

使用 Node.js、Mongoose 和 Discord.js 的未定义错误 [无法读取未定义的属性]

参考错误事件未定义node.js [重复]

JavaScript、Discord.js、Node.js 类型错误:无法读取未定义的属性“执行”