使用 require 和 node.js 加载远程 js 文件

2023-11-25

我一直在使用 NodeJS 和 javascript 开发在线套接字服务器,并且我一直在使用 require 在我的代码中创建“游戏室”:

new_game_obj = require('./forza4.js');

现在..当我在本地计算机上测试我的代码时,这可以找到,但是对于生产服务器,我遇到了问题。似乎由于某种技术原因,运行我的代码的进程与我有权访问的计算机(用于文件上传等)位于不同的计算机上,因此服务器场的人员要求我更改我的代码代码,以便我将从全局位置加载“forza4.js”中的代码,而不是像我现在那样在本地加载。 所以我将代码更改为:

new_game_obj = require('http://www.xxxxx.com/blabla/forza4.js');

(当然,我测试了该文件是否存在,只是为了确定,当我指向该实际地址时,它会显示在浏览器中) 但我的代码出现错误(此时,我再次在我的计算机上本地运行此错误),其中显示:

异常:错误:找不到模块'http://www.xxxxx.com/blabla/forza4.js'

所以为了安全起见,我做了:

new_game_obj = require('http://92.xx.xx.xx/blabla/forza4.js'); 

但同样的错误又出现了。

从远程服务器加载“扩展”到我的代码是否应该出现问题,或者我只是格式化“require”调用错误?

非常感谢!

Yuval.

附: 这是该线程的后续内容:这是较旧且已解决的帖子


看一下node.js模块文档

具体可以参考要求的算法

在 Node.js 中,require调用是同步的,因此无法加载不在您的文件系统上的文件(即从外部 URL)。

Update

您可以通过获取代码http请求- 或者,更好的是,一个https 请求并使用内置运行它vm模块 - 甚至与eval,但这似乎不是一个好主意 - 正如建议的那样这个老问题.

就像是

https.get( 'https://www.xxxxx.com/blabla/forza4.js', function( res ){
  res.on( 'data', function( data ){
    vm.runInThisContext( data, 'remote/forza4.js' );
  });
});

Note: 我没有测试这段代码

当然,这不是最好的解决方案,但确实是一个解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 require 和 node.js 加载远程 js 文件 的相关文章