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

标签 javascript webpack module require amd

在一个项目中,我遇到了需要加载第三方文件的情况,该文件使用脚本标签编写为 AMD 模块:<script type="text/javascript" src="https://cdn.host.com/external.js"></script> .

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

require(['src/module/MyObject'], (myObject) => {
 // Use myObject
});

该示例包含 RequireJS 作为脚本标记以启用此语法。
现在......我的项目是一个带有 Webpack 的 React 应用程序,我想在其中访问组件中的某个地方的“myObject”,但我似乎无法让它工作。

仅使用 require() 语法会失败,因为 Webpack 会尝试将代码添加到包中。我试过' non_webpack_require ' 替代方案,保留 RequireJS 脚本标记,但这似乎在代码的其他地方添加了各种冲突(到处都是未定义的东西)。我还尝试摆弄 webpack 'External' 属性,但似乎也无法使其按预期工作。后者似乎是要走的路,但我最终得到 'src/module/MyObject' is undefined 错误。

任何帮助表示赞赏。

编辑 :
根据要求,我的 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在同一个项目中。有一些边缘情况,但这不是其中之一。

我在你提供的那个库中看了一点,他们确实有 es6 模块包,你应该看看下面的例子:

https://github.com/bitmovin/bitmovin-player-web-samples/tree/master/webpack-demo

这将是最好的方法。

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

https://cdn.bitmovin.com/player/web/8/bitmovinplayer.js

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

https://github.com/bitmovin/bitmovin-player-web-samples

关于javascript - 如何使用 webpack 从外部文件加载 AMD 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60046017/

相关文章:

javascript - 如何水平对齐面板中具有动态大小的按钮

javascript - debounceTime 使表单控件运行两次

javascript - 如何将 TypeScript 与 Vue.js 和单文件组件一起使用?

arrays - 将大值传递给模块

google-app-engine - 就文件夹结构而言,Google App Engine 应用程序中的默认服务/模块能否成为非默认服务/模块的 sibling ?

javascript - Phaser - 显示图形对象 50 毫秒,并在同时按下一个或多个按键时销毁每个按键

javascript - 如何找到具有未知值的数据属性的元素?

javascript - Webpack 配置的 React 组件不受 css 影响

css - 忽略没有值的样式声明是 SCSS

angular - 无法在其他 NgModule 中加载 NgModule 的共享指令