Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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从外部文件加载AMD模块_Javascript_Webpack_Module_Require_Amd - Fatal编程技术网

Javascript 如何使用webpack从外部文件加载AMD模块

Javascript 如何使用webpack从外部文件加载AMD模块,javascript,webpack,module,require,amd,Javascript,Webpack,Module,Require,Amd,在一个项目中,我遇到了这样一个案例:我需要加载一个第三方文件,该文件使用脚本标记编写为AMD模块: 该文件包含示例代码使用的多个模块,如: require(['src/module/MyObject'], (myObject) => { // Use myObject }); 该示例包括RequireJS作为脚本标记,以启用此语法。 现在…我的项目是一个带有网页包的React应用程序,我想在其中访问组件中的某个位置的“myObject”,但我似乎无法让它工作 仅使用require()语

在一个项目中,我遇到了这样一个案例:我需要加载一个第三方文件,该文件使用脚本标记编写为AMD模块:

该文件包含示例代码使用的多个模块,如:

require(['src/module/MyObject'], (myObject) => {
 // Use myObject
});
该示例包括RequireJS作为脚本标记,以启用此语法。 现在…我的项目是一个带有网页包的React应用程序,我想在其中访问组件中的某个位置的“myObject”,但我似乎无法让它工作

仅使用require()语法失败,因为Webpack试图将代码添加到捆绑包中。我尝试了“non_webpack_require”选项,保留了RequireJS脚本标签,但这似乎在代码的其他地方添加了各种冲突(到处都是未定义的内容)。我也尝试过摆弄webpack的“外部”属性,但似乎也不能像预期的那样工作。后一种方法似乎是可行的,但我最终发现“src/module/MyObject”是未定义的错误

谢谢你的帮助

编辑: 根据要求,my webpack.config的相关部分:

{
  entry: './src/index.tsx',

  output: {
    path: path.join(__dirname, 'dist'),
    publicPath: '/',
    filename: `js/[name].[contenthash].bundle.js`,
    chunkFilename: 'js/[name].[contenthash].js',
  },

  resolve: {
    // Add '.ts' and '.tsx' as resolvable extensions.
    extensions: ['.ts', '.tsx', '.js', '.json'],
    plugins: [
      new TsconfigPathsPlugin(),
    ],
  },

  module: {
    rules: [
      {
        test: /\.tsx?$/,
        use: {
          loader: "babel-loader",
        },
        exclude: [/node_modules/],
      },
    ],
  },
}

我认为你使用了错误的例子

RequireJS
是一个不同的旧模块解析器。通常,您不应该在同一个项目中有
webpack
以及
Requirejs
。有一些边缘情况,但这不是其中之一

我在您提供的lib中查找了一点,他们确实有es6模块包,您应该查看以下示例:

这将是最好的办法

如果出于某种原因,您仍然希望使用他们的CDN,那么适合您的是:

在这里查看完整的演示回购(他们也有反应)


如果在HTML中包含库,则与Webpack无关。如果
myObject
是全局变量,请在加载应用程序后签入浏览器的devconsole。是的,这样我就可以下载文件并将其包含在我的包中。但仍然没有关于如何做到这一点的线索。此外,似乎没有全局对象。而且……我不想在脚本标记中包含RequireJS库,因为它破坏了其他内容。如果您使用Webpack在本地包含RequireJS,您不需要它,因为Webpack应该支持这一点。你在用什么图书馆?我可以看看这是文件:你也可以发布你的网页配置的相关部分吗?嗨@jony89。谢谢你的潜水!非常感谢。问题是我想使用他们的Chromecast库(不仅仅是播放器),它目前仅以我提供的格式提供。我知道RequireJS和Webpack之间的区别,但不幸的是,这只是目前的情况。