由于这个问题已经存在,但我不知道在 es2015 更新到 javascript 后这样做是否是正确的选择,有人可以重新评论一些简单的方法在节点 LTS 中做到这一点吗?
您可以使用自己喜欢的http库(例如got()
或axios()
或node-fetch()
(下载它,一旦将其本地下载到内存中,就可以使用eval()
来运行它。如果它实际上是一个模块,那么您可以将其保存到磁盘并使用require()
加载它。最新的导入语法将支持 URL,但我认为 node.js 还不允许它是文件 URL 以外的任何东西。
下面是一个示例,使用got()
库下载脚本并将其保存到文件中:
const {promisify} = require('util');
const pipeline = promisify(require('stream').pipeline);
const fs = require('fs');
const got = require('got');
pipeline(
got.stream('http://yourURLhere'),
fs.createWriteStream('yourfile.js')
).then(result => {
// load the script
require(`./yourfile.js`)
}).catch(err => {
console.log(err);
});
请注意,可以使用.pipe()
(如通常所示(在较少的步骤中完成此操作,但.pipe()
不会转发来自阅读流的错误,而pipeline()
会转发错误。