在一个项目中,我遇到了这样的情况:我需要使用脚本标签加载一个作为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 尝试将代码添加到 bundle 中。我尝试了 'non_webpack_require' 替代方案,保持 RequireJS 脚本标签,但似乎这会在代码的其他地方添加各种冲突(所有地方都有未定义的东西)。我还尝试了调整 webpack 的 External 属性,但似乎也不能按预期工作。后者似乎是正确的方法,但最终我会遇到 'src/module/MyObject' 未定义错误。
感谢任何帮助。 编辑: 如请求所示,这是我的 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/],
},
],
},
}
myObject
是否为全局变量。 - kkkkkkk