首页 > 解决方案 > 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

解决方案


看起来你正在使用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

推荐阅读