2

我正在尝试将 esbuild 与外部反应一起使用。

这是我的 package.json 文件中的 esbuild 命令

  "scripts": {
    "esbuild": "esbuild ./src/index.js --bundle --outfile=dist/esmain.js --loader:.js=jsx --external:react-dom --external:react "
  }

运行命令时,我没有收到任何错误:

npm run esbuild

> @1.0.0 esbuild C:\prog
> esbuild ./src/index.js --bundle --outfile=dist/esmain.js --loader:.js=jsx --external:react-dom --external:react


  dist\esmain.js  32.7kb

Done in 13ms

问题是当我在浏览器(chrome)中运行程序时,我在控制台中收到此错误

Uncaught Error: Dynamic require of "react" is not supported
    at __require (esmain.js:12)
    at esmain.js:27
    at esmain.js:899

任何想法如何解决这一问题?

4

2 回答 2

0

我从错误中想到的是。您导入的代码中有这样的反应,这实际上是 Nodejs 中主要使用但浏览器不支持的 commonjs 约定

常量反应 = 要求('反应');

因此,只需在代码编辑器中针对 require('react') 进行代码搜索,并将其替换为 import 语句。希望它对你有用

于 2022-01-11T10:37:37.680 回答
-3

你想通过将反应标记为外部来实现什么?根据我在文档中读到的内容,我能想到的唯一用例是一个加载了 react common js 的网站,并且您想在脚本中重用此代码。但后来我的问题是 - 为什么在同一页面上有 2 个应用程序,并且在此之上构建不同。

不知道这是否有帮助,但我写了一篇关于构建使用 esbuild 生成的 create-react-app 的文章- 构建反应代码似乎非常顺利,尤其是与其他一些框架相比。

于 2021-07-22T19:59:15.777 回答