T M*_*ack 5 javascript external require node.js electron
我正在构建一个 Atom Electron 应用程序。现在我的一个 webview 的 preload.js 中有这个:
var { requireTaskPool } = require('electron-remote');
var work = '';
var _ = require('lodash');
work = requireTaskPool(require.resolve('./local/path/to/js/file.js'));
function scriptRun() {
console.log('Preload: Script Started');
// `work` will get executed concurrently in separate background processes
// and resolve with a promise
_.times(1, () => {
work(currentTab).then(result => {
console.log(`Script stopped. Total time running was ${result} ms`);
});
});
}
module.exports = scriptRun;
scriptRun();
Run Code Online (Sandbox Code Playgroud)
它获取本地脚本,然后在后台进程中执行它。
我想做同样的事情,除了我想从外部源检索脚本,如下所示
work = requireTaskPool(require.resolve('https://ex.com/path/to/js/file.js'));
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我会收到如下错误:
Uncaught Error: Cannot find module 'https://ex.com/path/to/js/file.js'
Run Code Online (Sandbox Code Playgroud)
如何加载外部脚本?然后将加载的脚本与我的work函数一起使用。我的感觉是 require 只适用于本地文件。如果 AJAX 是答案,我可以看一下如何获取脚本,然后将其传递到我的脚本work而不事先执行它的示例吗?
您尚未提供有关 file.js 的任何详细信息。但我可以给你一个总体思路。
要将包称为模块,至少需要满足两件事:
file.js 的结构应该是这样的:
//load your dependencies here
var something = require("something");
//module.exports is necessary to export your code,
//so that you can fetch this code in another file by using require.
module.exports = function() {
abc: function(){
//code for abc function
},
xyz: function(){
//code for xyz function
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您将包放在任何网站上,您可以通过以下方式访问它:
npm install https://ex.com/path/to/js/file.js
Run Code Online (Sandbox Code Playgroud)
现在,您的包的副本将被放入节点模块文件夹中。
所以,现在您可以通过以下方式访问它:
var x = require('name-of-your-package-in-node-modules');
Run Code Online (Sandbox Code Playgroud)
现在,您还可以执行以下操作:
var abc = require('name-of-your-package-in-node-modules').abc;
Run Code Online (Sandbox Code Playgroud)
或者
var xyz = require('name-of-your-package-in-node-modules').xyz;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11275 次 |
| 最近记录: |