yarn2 rollup -c 找不到模块“react”

Posted

技术标签:

【中文标题】yarn2 rollup -c 找不到模块“react”【英文标题】:yarn2 rollup -c Cannot find module "react" 【发布时间】:2021-11-04 11:16:31 【问题描述】:

tsconfig.json


    "compilerOptions": 
      "declaration": true,
      "declarationDir": "dist/types", // dist폴더에 ts 타입 속성을 빌드한다.
      "target": "es5", // ES 대상버전
      "lib": ["dom", "dom.iterable", "esnext"], // 컴파일에 포함될 라이브러리 파일 목록
      "skipLibCheck": true, // *.D.ts의 타입검사 건너 뜀.
      "esModuleInterop": true, // ASD 활성
      "allowSyntheticDefaultImports": true, // default 없는 모듈에서 default import 허용
      "strict": true,
      "module": "es6", // 모듈 코드 생성 지정
      "moduleResolution": "node", // 모듈 해석방식 결정
      "resolveJsonModule": true, // json확장자로 임포트된 모듈 포함.
      "jsx": "react", // tsx 파일에서 jsx를 지원함. 모드가 여러개임
      "typeRoots": ["@types"],
      "noImplicitAny": false,
      "baseUrl": ".",
      "paths": 
        "@/*": ["/*"],
        "~/*": ["src/*"]
      ,
    ,
    "include": ["**/*.tsx", "**/*.ts", "@types", "index.ts", "src/index.ts"],
    "exclude": ["build", "dist", "lib", "**/stories", "**/*.stories.tsx", "rollup.config.js"]

rollup.config.js

import pkg from './package.json';
import typescript from 'rollup-plugin-typescript2';
import peerDepsExternal from 'rollup-plugin-peer-deps-external';
import postcss from 'rollup-plugin-postcss';
import postcssPrefixer from 'postcss-prefixer';
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
import json from '@rollup/plugin-json';
import babel from 'rollup-plugin-babel';
import svgr from '@svgr/rollup';
import url from 'rollup-plugin-url';

const extensions = ['.js', '.jsx', '.ts', '.tsx', '.scss'];

// babel-preset-react-app를 사용한다면 BABEL_ENV를 필수로 설정해야함.
process.env.BABEL_ENV = 'production';

function setUpRollup( input, output ) 
    return 
      input,
      // exports: 'named',
      output,
      watch: 
        include: '*',
        exclude: '.yarn/**'
      ,
      plugins: [
        peerDepsExternal(), // peerDependency를 번들링 결과물에서 제외
        json(),
        resolve( extensions ), // node_modules에서 모듈 불러올 수 있게 해줌, ts/tsx 불러올 수  있게 해줌.
        commonjs(),
        babel( extensions, runtimeHelpers: true ), // Babel을 사용 할 수 있게 해줌
        url(),
        svgr(),
        typescript(
          exclude: [ '**/stories', '**/*.stories'],
          useTsconfigDeclarationDir: true
        ), // 만든 타입을 자동으로 build된 결과물에 넣어줌.
        postcss(
          extract: true,
          modules: true,
          sourceMap: true,
          use: ['sass'],
          plugins: [
            postcssPrefixer(
              prefix: `$pkg.name__`,
            ),
          ],
        ),
      ],
      external: ['react', 'react-dom'],
    ;
  ;

  export default [
    setUpRollup(
      input: 'src/index.ts',
      output: 
        file: pkg.cjs,
        sourcemap: true,
        format: 'cjs',
      ,
    ),
    setUpRollup(
      input: 'src/index.ts',
      output: 
        file: pkg.esm,
        sourcemap: true,
        format: 'esm',
      ,
    ),
  ];

package.json


  "name": "custom-reactfullpage.js",
  "version": "1.0.0",
  "cjs": "dist/cjs.js",
  "esm": "dist/esm.js",
  "main": "dist/index.js",
  "repository": "https://github.com/remigailard80/fullpageLib.js",
  "author": "KIMMINSEOK",
  "license": "NO LICENSE",
  "types": "dist/types/index.d.ts",
  "module": "dist/cjs.js",
  "type": "module",
  "files": [
    "/dist"
  ],
  "devDependencies": 
    "@babel/core": "^7.15.0",
    "@mdx-js/react": "^1.6.22",
    "@rollup/plugin-commonjs": "^20.0.0",
    "@rollup/plugin-json": "^4.1.0",
    "@rollup/plugin-node-resolve": "^13.0.4",
    "@storybook/addon-actions": "^6.3.8",
    "@storybook/addon-docs": "^6.3.8",
    "@storybook/addon-essentials": "^6.3.8",
    "@storybook/addon-links": "^6.3.8",
    "@storybook/cli": "^6.3.8",
    "@storybook/react": "^6.3.8",
    "@svgr/rollup": "^5.5.0",
    "@types/esm": "^3",
    "@types/jest": "^27.0.1",
    "@types/mdx-js__react": "^1",
    "@types/node": "^16.7.10",
    "@types/react": "^17",
    "@types/react-dom": "^17.0.9",
    "@yarnpkg/pnpify": "^3.0.1-rc.2",
    "@yarnpkg/sdks": "^2.4.2-rc.2",
    "babel-loader": "^8.2.2",
    "babel-preset-react-app": "^10.0.0",
    "esm": "^3.2.25",
    "postcss": "^8.3.6",
    "postcss-prefixer": "^2.1.3",
    "react": "^17.0.2",
    "react-docgen-typescript-loader": "^3.7.2",
    "react-dom": "^17.0.2",
    "rollup": "^2.56.3",
    "rollup-plugin-babel": "^4.4.0",
    "rollup-plugin-commonjs": "^10.1.0",
    "rollup-plugin-node-resolve": "^5.2.0",
    "rollup-plugin-peer-deps-external": "^2.2.4",
    "rollup-plugin-postcss": "^4.0.1",
    "rollup-plugin-typescript2": "^0.30.0",
    "rollup-plugin-url": "^3.0.1",
    "typescript": "^4.4.2"
  ,
  "peerDependencies": 
    "react": "*",
    "react-dom": "*"
  ,
  "scripts": 
    "sb": "start-storybook -p 6006",
    "build-storybook": "build-storybook"
  


我在 VSCode '4.4.2-sdk' 上设置了 typescript 版本。

当我输入时

yarn rollup -c

随后出现此错误,

[!] (plugin rpt2) Error: C:/custom-reactfullpage.js/fullpageLib.js/src/components/Container.tsx(1,19): semantic error TS2307: Cannot find module 'react' or its corresponding type declarationsrc\components\Container.tsx
Error: C:/custom-reactfullpage.js/fullpageLib.js/src/components/Container.tsx(1,19): semantic error TS2307: Cannot find module 'react' or its corresponding type declarations.

猜我的代码现在不要使用 ./pnp.cjs。

** 但是如果我输入 **

yarn tsc
yarn rollup -c

构建成功,生成的js文件是这样的

并遵循此错误

为什么我打字就成功了

yarn tsc

我如何在没有 tsc 的情况下构建项目?

【问题讨论】:

【参考方案1】:

我终于解决了这个问题,但我不确定是什么导致了问题。

猜测是由于安装的 typescript 和 vscode 设置的版本不同造成的..

我重装了typescript和yarn很多次,都解决了。

【讨论】:

以上是关于yarn2 rollup -c 找不到模块“react”的主要内容,如果未能解决你的问题,请参考以下文章

React,Typescript - 找不到模块...或其相应的类型声明

未捕获的错误:找不到模块“react/jsx-runtime”

Sapper/Svelte/Rollup 外部依赖最佳实践?

从 npm 迁移到 Yarn 2 PnP:ts-loader 找不到 webpack

如何在 Yarn 2 中列出和使用包?

使用打字稿和模块 css 反应库 [重复]