preact - preact-cli 项目在添加 react-ga 时显示“无法解析 'react'”(别名问题)
问题描述
我有一个preact-cli
基于preact create default
.
添加react-ga
(Google Analytics)时,我收到此构建错误:
✖ ERROR ../node_modules/react-ga/dist/esm/components/OutboundLink.js
Module not found: Error: Can't resolve 'react' in './node_modules/react-ga/dist/esm/components'
@ ../node_modules/react-ga/dist/esm/components/OutboundLink.js 169:0-41 239:13-18 244:2-11
@ ../node_modules/react-ga/dist/esm/index.js
@ ./components/app.js
@ ./index.js
@ ../node_modules/preact-cli/lib/lib/entry.js
@ multi ../node_modules/preact-cli/lib/lib/entry webpack-dev-server/client webpack/hot/dev-server
我正在使用默认配置(无自定义preact.config.js
),因此输出config.resolve.alias
为:
{
style: 'MYPROJECT/src/style',
'preact-cli-entrypoint': 'MYPROJECT/src/index',
react: 'preact-compat',
'react-dom': 'preact-compat',
'react-addons-css-transition-group': 'preact-css-transition-group',
'preact-cli/async-component': 'MYPROJECT/node_modules/@preact/async-loader/async.js'
}
有小费吗?
更新:输出npm ls | grep preact
:
├─┬ enzyme-adapter-preact-pure@2.2.0
│ └─┬ preact-render-to-string@4.1.0
├─┬ eslint-config-preact@1.1.0
├─┬ jest-preset-preact@1.0.0
├── UNMET PEER DEPENDENCY preact@10.3.4
├─┬ preact-cli@3.0.0-rc.10
npm ERR!│ ├─┬ @preact/async-loader@3.0.0-rc.9
peer dep missing: preact@^8.1.0, required by preact-render-spy@1.3.0
npm ERR! peer dep missing: react@^15.6.2 || ^16.0, required by react-ga@2.7.0
npm ERR! peer dep missing: webpack@4.28.4, required by babel-esm-plugin@0.7.1
npm ERR! peer dep missing: preact@^8.1.0, required by @preact/async-loader@3.0.0-rc.9
npm ERR! peer dep missing: @types/react@^15.0.0 || ^16.0.0, required by react-hot-loader@4.12.20
npm ERR! peer dep missing: react@^15.0.0 || ^16.0.0, required by react-hot-loader@4.12.20
npm ERR! peer dep missing: react-dom@^15.0.0 || ^16.0.0, required by react-hot-loader@4.12.20
│ ├── UNMET PEER DEPENDENCY preact@^8.1.0
├─┬ preact-helmet@4.0.0-alpha-3
│ └── preact-side-effect@1.3.0
├─┬ preact-render-spy@1.3.0
│ └─┬ preact-render-to-string@3.8.2
├─┬ preact-render-to-string@5.1.4
├── preact-router@3.2.1
解决方案
看起来你正在使用preact-cli@2
-preact@8
现在存在一个问题,Preact CLI v3 实际上是 Preact CLI v2 应用程序的基架。
通过运行以下命令将您的项目更新到 Preact X 和 Preact CLI v3:
npm i -D preact-cli@rc
npm i preact@latest preact-router@latest preact-render-to-string@latest
npm rm preact-compat
推荐阅读
- azure - Azure 逻辑应用 - 从 http 请求接收文件
- bash - 如何将复杂的文件 glob 传递给子 shell?
- javascript - 如何在网页上找到这个元素?
- regex - 如何从 1 匹配到 12。给定 Version/13.1.2
- google-cloud-platform - 从 Java 中的 pub sub 流式传输时使用 PubSub-NullPointerException 进行 Spark Streaming
- python-3.x - 无法创建多个类的对象
- google-apps-script - exec节点调用gaction令牌时如何将其传递给gactions(无运算符)
- php - 如何为路由中的多个参数实现“defaults()” - Laravel
- java - Mac 10.15 上的 ElasticSearch 错误“/System/Volumes/Data/usr/local/var/lib/elasticsearch/nodes/0”“写入”
- java - Wildfly 14 中带有 Infinispan 的本地缓存