gpt4 book ai didi

javascript - Node.js 在其他模块中使用 require 时获取未定义的属性

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:14 25 4
gpt4 key购买 nike

这就是我的 app.js 的样子

var app = require('http').createServer(handler),
io = require('socket.io').listen(app),
static = require('node-static'); // for serving files
var game = require('./game.js').createGame();

// This will make all the files in the current folder
// accessible from the web
var fileServer = new static.Server('./');

// This is the port for our web server.
// you will need to go to http://localhost:8080 to see it
app.listen(8080);

// Listen for incoming connections from clients
io.sockets.on('connection', function (socket) {
handle Events ...
});

exports.io = io;
exports.game = game;

当我尝试访问创建的 socket.io listner 或游戏实例时,我收到错误消息,指出其未定义。这就是我尝试在trick,js 中访问它的方式

var game = require('./app.js').game;
var socketio = require('./app.js').io;
var PlayerMove = require('./playerMove.js');

这可能是因为trick.js实际上是在app.js之前执行的(我放置了调试点并在那里得到了确认)。我该如何避免这种情况?有没有更好的方法来公开 Node.js 中的对象实例,我可能应该使用某种模式?

最佳答案

声明变量并不导出它。如果您需要为模块导出某些内容,则应该使用exports.myVariable = myValue。

第一次需要你的app.js 文件将会运行它。因此,一旦您退出 require() 调用,您在其中导出的所有内容都将可用

关于javascript - Node.js 在其他模块中使用 require 时获取未定义的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15327757/

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