我一直在使用NodeJS和javascript开发在线套接字服务器,并且已经在我的代码中使用require:
创建了"游戏室"。
1 | new_game_obj = require('./forza4.js'); |
现在..当我在本地计算机上测试代码时,此方法可以找到,但是对于生产服务器,我遇到了问题。似乎出于某种技术原因,运行我的代码的进程与我可以访问(用于文件上载等)的计算机不在同一台计算机上,因此服务器场中的家伙要求我更改我的计算机代码,这样我就可以从全局位置而不是本地加载" forza4.js"中的代码,就像我现在所做的那样。
所以我将代码更改为此:
1 | new_game_obj = require('http://www.xxxxx.com/blabla/forza4.js'); |
(我当然测试过文件是否存在,请确保当我指向该实际地址时它会显示在浏览器中)
但是我从我的代码中得到了一个错误(再次,在这一点上,我正在我的机器上本地运行此错误),它说:
Exception: Error: Cannot find module 'http://www.xxxxx.com/blabla/forza4.js'
为了安全起见,我这样做了:
1 | new_game_obj = require('http://92.xx.xx.xx/blabla/forza4.js'); |
但是,同样的错误。
从远程服务器向我的代码加载"扩展名"是否会出现问题,还是我只是将" require"调用的格式设置为错误?
感谢一堆!
Yuval。
P.S。
这是此线程的后续操作:
这是较旧且已解决的帖子
看看node.js模块文档
具体来说,请参阅require算法
在node.js内,
更新
您可以通过http请求(甚至更好的是https请求)获取代码,然后使用内置的vm模块(甚至使用
类似
的东西
1 2 3 4 5 | https.get( 'https://www.xxxxx.com/blabla/forza4.js', function( res ){ res.on( 'data', function( data ){ vm.runInThisContext( data, 'remote/forza4.js' ); }); }); |
注意:我没有测试此代码
当然,这不是最好的解决方案,但它是一个解决方案。
"从URL要求" NPM程序包如何?
刚刚找到它-尚未尝试! https://www.npmjs.com/package/require-from-url