gpt4 book ai didi

javascript - Webpack:尝试公开捆绑对象以供其他脚本使用,对象仍未定义

转载 作者:行者123 更新时间:2023-11-30 06:23:48 24 4
gpt4 key购买 nike

我正在努力了解基础知识,将 jsx 文件转换为 js。但是,我的转译代码需要被非转译代码调用。 output.library 应该可以帮助解决这个问题。

在生成的包中,我看到了 var react 的定义。但就在单步执行整个包之后,很明显 React 仍未设置。

我的 webpack.config.js

var webpack = require('webpack');
var path = require('path');

module.exports = {
entry: "./public/js/ui/react/dialog.jsx",
output: {
path: path.resolve(__dirname, "public/js/ui/react/"),
filename: "bundle.js",
libraryTarget: "var",
library: "react"
},
resolve: {
extensions: ['.js', '.jsx']
},
module: {
rules: [
{
test: /\.jsx$/,
loader: 'babel-loader',
exclude: [
path.resolve(__dirname, "node_modules/")
],
query: {
presets: ['es2015', "react"]
}
}
]
},
node: {
fs: "empty"
}
}

以及我正在尝试转译的 jsx:

'use strict';

react.Dialog = class extends React.Component {
render() {
return (
<div class="bubble-speech">Hello World</div>
)
}
}

在我的代码的其他地方,在 bundle 之前,我有这个,所以 react.Dialog 赋值不是空引用错误:

var react = {};

如果我去掉那一行,bundle.js 将在尝试分配 react.Dialog 时抛出错误。但是如果我把它留在里面,var react 仍然设置为空对象。这似乎是一个矛盾!我在这里缺少什么?

最佳答案

我认为应该将 react 设置为外部定义的全局变量,如下所示:

{
output: {
// export itself to a global var
libraryTarget: "var",
// name of the global var: "Foo"
library: "Foo"
},
externals: {
// require("react") is external and available
// on the global var React
"react": "React"
}
}

关于javascript - Webpack:尝试公开捆绑对象以供其他脚本使用,对象仍未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51664047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com