gpt4 book ai didi

javascript - ReferenceError : window is not defined at object. <匿名> Node.js

转载 作者:数据小太阳 更新时间:2023-10-29 04:27:28 24 4
gpt4 key购买 nike

我在这里看到过类似的问题,但没有一个符合我的情况。在我的网站上我有 3 JavaScript文件:client.js , server.js , myModule.js .在 client.js我创建了一个名为 windowVar 的窗口变量我给它添加了一些属性。在 myModule.js ,我添加了一些其他属性并在那里使用它们,然后导出文件并在 server.js 中需要它.

client.js :

window.windowVar= {
func1: function(args) {
//some sode here
},
counter:0
};

myModule.js :

module.exports={wVar:windowVar, addMessage ,getMessages, deleteMessage};

windowVar.serverCounter = 0;
windowVar.arr1=[];

server.js :

var m= require('./myModule');

在 node.js 中运行服务器时出现以下错误:

ReferenceError : window is not defined at object. <anonymous>

据我了解 window 是一个浏览器属性,但是在这种情况下我该如何解决错误?感谢任何帮助

最佳答案

window 是浏览器的东西,在 Node.js 上不存在,但是 ES2020 引入了 globalThis ,它(作为 JavaScript 规范的一部分)在兼容的浏览器引擎和 Node.js 中均可用。

如果你真的想在 Node.js 中创建一个 global,使用 globalThis 或(对于旧版本)global:

// BUT PLEASE DON'T DO THIS, keep reading
globalThis.windowVar = /*...*/:
// or
global.windowVar = /*...*/;

global 是 Node 的全局对象标识符(在 globalThis 存在之前在它们的 API 中定义),就像浏览器上的 window 一样。对于可能在各种环境(包括旧环境)中运行的代码:

const g = typeof globalThis === "object"
? globalThis
: typeof window === "object"
? window
: typeof global === "object"
? global
: null; // Causes an error on the next line
g.windowVar = /*...*/;

但是,没有必要在 Node 程序中创建真正的全局变量。相反,只需创建一个全局模块:

let /*or `const`*/ windowVar = /*...*/;

...并且由于您将它包含在您的exports 中,其他模块可以根据需要访问它引用的对象。

关于javascript - ReferenceError : window is not defined at object. <匿名> Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45964178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com