use*_*016 7 javascript node.js
我在这里看过类似的问题,但没有一个与我的情况相符.在我的网站我有3个JavaScript文件:client.js,server.js,myModule.js.在client.js我创建一个名为的窗口变量windowVar,我添加了一些atrributes.在myModule.js,我添加一些其他属性并在那里使用它,我导出文件并要求它server.js.
client.js:
window.windowVar= {
func1: function(args) {
//some sode here
},
counter:0
};
Run Code Online (Sandbox Code Playgroud)
myModule.js :
module.exports={wVar:windowVar, addMessage ,getMessages, deleteMessage};
windowVar.serverCounter = 0;
windowVar.arr1=[];
Run Code Online (Sandbox Code Playgroud)
server.js:
var m= require('./myModule');
Run Code Online (Sandbox Code Playgroud)
在node.js中运行服务器时,我收到以下错误:
ReferenceError:窗口未在object处定义.
<anonymous>
据我所知,window是一个浏览器属性,但在这种情况下如何解决错误呢?任何帮助表示赞赏
T.J*_*der 17
window 是Node上不存在的浏览器.
如果您真的想要创建全局,请global改用:
global.windowVar = /*...*/; // BUT PLEASE DON'T DO THIS, keep reading
Run Code Online (Sandbox Code Playgroud)
global是Node的全局对象标识符,就像window在浏览器上一样.
但是,没有必要在Node程序中创建真正的全局变量.相反,只需创建一个全局模块:
var windowVar = /*...*/;
Run Code Online (Sandbox Code Playgroud)
...并且由于您将其包含在您的中exports,其他模块可以根据需要访问它所引用的对象.
Com*_*ode 14
我使用了这样的东西,它可以防止错误:
let foo = null;
if (typeof window !== "undefined") {
foo = window.localStorage.getItem("foo");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50318 次 |
| 最近记录: |