typescript - Kan inte hitta ./Page - Fältet 'browser' innehåller ingen giltig alias-konfiguration storybook


Jag håller för närvarande på att sätta upp ett create-react-app monorepo med storybook med Yarn Workspaces V1.22. Förvaret är rent (bara bootstrapat ett create-react-app) och inga ytterligare ändringar har gjorts. Faktum är att det initialiserades med npx sb init.

Det enda jag gjorde var att ta bort mappen node_modules och kopiera alla devDependencies och dependencies till den övergripande package.json och köra yarn install... Men det ville inte starta.

Jag träffas av följande:

Field 'browser' doesn't contain a valid alias configuration
        C:\Users\asili\Dropbox\Programming\GitHub\amplify-react-monorepo\components\src\stories\Page.jsx doesn't exist
      as directory
        C:\Users\asili\Dropbox\Programming\GitHub\amplify-react-monorepo\components\src\stories\Page doesn't exist

Jag har försökt rensa cachen, uppgradera/nedgradera till/från Yarn 2, ta bort node_modules och kolla på beroendena. Inget hittills.

Här är min package.json:

{
  "name": "components",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "cra-template-typescript": "1.1.2",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-scripts": "4.0.3"
  },
  "devDependencies": {
    "@storybook/addon-actions": "^6.2.9",
    "@storybook/addon-essentials": "^6.2.9",
    "@storybook/addon-links": "^6.2.9",
    "@storybook/node-logger": "^6.2.9",
    "@storybook/preset-create-react-app": "^3.1.7",
    "@storybook/react": "^6.2.9",
    "@types/jest": "26.0.23",
    "@types/node": "^15.6.1",
    "@types/react": "17.0.8",
    "@types/react-dom": "17.0.5",
    "typescript": "^4.3.2"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "storybook": "start-storybook -p 6006 -s public",
    "build-storybook": "build-storybook -s public"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ],
    "overrides": [
      {
        "files": [
          "**/*.stories.*"
        ],
        "rules": {
          "import/no-anonymous-default-export": "off"
        }
      }
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

Och jag försöker köra det med kommandot Yarn workspaces:

yarn workspace components start

Men jag har inte kunnat lista ut vad problemet är.

Svar #1

För att lösa detta, ta bort eslint-delen i package.json och utöka den till en egen fil.

Skapa följande .eslintrc.js (components/.eslintrc.js) och inkludera:

module.exports = {
  extends: ["react-app"],
  plugins: ["react", "@typescript-eslint", "react-hooks"],
  env: {
    browser: true,
    es6: true,
    jest: true,
  },
  parserOptions: {
    ecmaFeatures: {
      jsx: true,
    },
    ecmaVersion: 2018,
    sourceType: "module",
    project: "tsconfig.json",
  },
};

Dessutom, skapa en tsconfig.json-fil i /components/tsconfig.json.

{
  "exclude": ["node_modules", "lib-esm", "lib", "**/*.story*", "**/*.spec*"],
  "include": ["index.ts", "./src/**/*"],
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "lib",
    "declaration": true,
    "noEmit": false,
    "jsx": "react",
    "esModuleInterop": true,
    "typeRoots": ["./src/typings"]
  }
}

Skapa en huvud-tsconfig.json i rotkatalogen:

{
  "compilerOptions": {
    "target": "es2017",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx",
    "noFallthroughCasesInSwitch": true
  },
  "include": [
    "app/src",
    "home-app/src",
    "components"
  ]
}

Sedan, i din components/package.json, ta bort eventuella poster för eslint:

{
  "name": "components",
  "version": "0.1.0",
  "private": true,
  "source": "index.ts",
  "main": "./index.ts",
  "module": "./index.ts",
  "dependencies": {
    "cra-template-typescript": "1.1.2",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-scripts": "4.0.3"
  },
  "devDependencies": {
    "@craco/craco": "^6.1.2",
    "@storybook/addon-actions": "^6.2.9",
    "@storybook/addon-essentials": "^6.2.9",
    "@storybook/addon-links": "^6.2.9",
    "@storybook/node-logger": "^6.2.9",
    "@storybook/preset-create-react-app": "^3.1.7",
    "@storybook/react": "^6.2.9",
    "@types/jest": "26.0.23",
    "@types/node": "^15.6.1",
    "@types/react": "17.0.8",
    "@types/react-dom": "17.0.5",
    "typescript": "^4.3.2"
  },
  "scripts": {
    "storybook": "start-storybook -p 6006 -s public",
    "build-storybook": "build-storybook -s public"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}