gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:01:58 34 4
gpt4 key购买 nike

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

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

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

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

(当然,我测试过文件是否存在,只是为了确定,当我指向那个实际地址时,它会显示在浏览器中)但是我从我的代码中得到一个错误(同样,此时,我在我的机器上本地运行它),它说:

Exception: Error: Cannot find module 'http://www.xxxxx.com/blabla/forza4.js'

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

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

但又是同样的错误。

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

非常感谢!

尤瓦尔。

附言这是此线程的跟进: This is the older and resolved post

最佳答案

看看node.js modules docs

具体引用the require algorithm

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

更新

您可以通过 http request 获取代码- 或者,更好的是 https request并使用内置的 vm 运行它模块 - 甚至使用 eval,但这似乎不是一个好主意 - 正如 this old question 上的建议.

有点像

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

注意:我没有测试这段代码

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

关于javascript - 使用 require 和 node.js 加载远程 js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23566310/

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