Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Webpack:在运行时从URL动态加载js模块_Javascript_Typescript_Webpack_Require_Remote Server - Fatal编程技术网

Javascript Webpack:在运行时从URL动态加载js模块

Javascript Webpack:在运行时从URL动态加载js模块,javascript,typescript,webpack,require,remote-server,Javascript,Typescript,Webpack,Require,Remote Server,我目前正在开发一个库,它应该从远程主机动态加载JavaScript并实例化它 我正在用TypeScript编写库,我的计划是使用Webpack作为绑定器 在另一台主机(远程系统)上运行一个提供JavaScript代码的提供程序(请参见此处:)。 该库将通过Webfinger动态解析“标识”。这些标识由一个对象表示,它们有一个指向“存根提供程序”的属性,该“存根提供程序”将提供JavaScript代码(我前面提到的链接)。我的库应该在运行时加载此脚本(库以前不知道此存根的目标),并且应该使用它 当

我目前正在开发一个库,它应该从远程主机动态加载JavaScript并实例化它

我正在用TypeScript编写库,我的计划是使用Webpack作为绑定器

在另一台主机(远程系统)上运行一个提供JavaScript代码的提供程序(请参见此处:)。 该库将通过Webfinger动态解析“标识”。这些标识由一个对象表示,它们有一个指向“存根提供程序”的属性,该“存根提供程序”将提供JavaScript代码(我前面提到的链接)。我的库应该在运行时加载此脚本(库以前不知道此存根的目标),并且应该使用它

当前我的webpack.config.js如下所示:

var path = require('path');
var webpack = require('webpack');
var WebpackBuildNotifierPlugin = require('webpack-build-notifier');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

const PATHS = {
  src: path.join(__dirname, './src'),
  build: path.join(__dirname, './dist')
};

module.exports = {

  entry: {
    wonder: PATHS.src + '/wonder'
  },
  output: {
    path: PATHS.build,
    filename: '[name].js',
    library: 'Wonder',
    libraryTarget: 'umd'
  },
  devtool: 'source-map',
  module: {
    loaders: [
      {
        test: /\.ts$/,
        loader: 'ts-loader'
      }
    ]
  },
  resolve: {
    extensions: ['.ts', '.js']
  },
  plugins: [
    new WebpackBuildNotifierPlugin()
  ]
};
以下是库代码的一部分:

require.ensure([], function() {
  require(localMsgStubUrl);
});
当我现在将捆绑库包括在示例应用中时,我将得到以下错误:

那么,有没有办法告诉webpack不要捆绑从URL加载的外部资源所需的代码,以便我可以像现在这样使用这些代码

我不想在配置中静态地告诉webpack URL,因为我正在加载的其他存根可能位于不同的目标上


提前感谢您的帮助

您可以告诉webpack使用externals。当您执行此操作时,此网页不会从您指定的url加载库,而是希望它们已在浏览器上下文中并包含在标记中。感谢此提示,这可能是我需要的,但我仍然有相同的错误。我在webpack.config.js中添加了以下内容:
外部:{MessagingStub:'MessagingStub'}
(用于再次加载,例如:)?我错过了一些必要的东西吗?我看到你的问题了。SimpleSub.js文件的格式为commonjs,但它直接加载到浏览器中。请注意对导出对象的引用。我不知道处理这个问题的正确方法,但是一个快速的方法是在网页中的脚本上方定义
exports={}
,然后使用
{MessagingStub:“exports”}
。我想这不是我需要的。我试过了,但没有任何效果。我现在将远程模块更改为amd分辨率,以确保webpack能够处理此问题(如此处所述,它应该:)。我认为问题在于,即使在我将
externals:{MessaginStub:'MessaginStub'}
添加到我的webpack.config.js之后,webpack仍然试图将远程文件绑定。那个么你们知道为什么webpack似乎忽略了这一点吗?我还是会出错。