Javascript 如何使用webpack从外部文件加载AMD模块
在一个项目中,我遇到了这样一个案例:我需要加载一个第三方文件,该文件使用脚本标记编写为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()语
该文件包含示例代码使用的多个模块,如:
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之间的区别,但不幸的是,这只是目前的情况。