在我的server.js中,我需要检查我的global.js中是否有一个变量为true(带有if语句),但是后来在该文件中我使用了窗口,并且未在服务器中定义窗口文件。这意味着我不能像这样要求整个文件:
var global = require('../client/js/global');
但我想做这样的事情:
require thisSpecificVariable from ('../client/js/global');
有一种称为导入的导入特定变量,但在节点8中不受支持。
所以只是为了澄清一次,这就是我想要做的事情:
if (this is true) {
call this function
}
但是我收到一个错误说:“参考错误:窗口没有定义在bla bla,bla bla,bla bla等等。”大多数这些地方都以模块开头。
我的global.js看起来像这样(作为例子的一小部分):
module.exports = {
freeMove: true,
cashing: false,
gameStarted: false,
chatHidden: false,
// Canvas
screenWidth: window.innerWidth,
screenHeight: window.innerHeight,
}
是否可以引用一个特定变量或忽略包含窗口的变量?我该怎么做?
答案 0 :(得分:1)
您可以从导出的对象中获取一个项目,如下所示:
var gameStarted = require('../client/js/global').gameStarted;
但是,如果您尝试在未定义window
对象的环境中运行此模块,则仍会生成错误,因为整个模块都已初始化,无论您输出的是哪个想。要解决此问题,您必须自行修复global.js
,以便在未定义window
时不会尝试引用它。
例如,您可以在global.js
:
module.exports = {
freeMove: true,
cashing: false,
gameStarted: false,
chatHidden: false,
};
if (typeof window !== "undefined") {
module.exports.screenWidth = window.innerWidth;
module.exports.screenHeight = window.innerHeight;
}
然后,当window
对象不存在时,你不会尝试引用它(大概是当你从node.js而不是浏览器运行时)。