使用Rollup打包NPM模块时遇TypeError: hostOrText.readFile is not a function错误
使用Rollup打包NPM模块时遇到
TypeError: hostOrText.readFile is not a function错误 我尝试用Rollup将代码库打包为NPM模块,持续遇到以下错误:
[!] (plugin commonjs--resolver) TypeError: hostOrText.readFile is not a function at readJsonOrUndefined (/Users/mng/Documents/UI-shared-library/node_modules/typescript/lib/typescript.js:19519:74) at Object.readJson (/Users/mng/Documents/UI-shared-library/node_modules/typescript/lib/typescript.js:19528:16) at getPackageJsonInfo (/Users/mng/Documents/UI-shared-library/node_modules/typescript/lib/typescript.js:44772:41) at loadModuleFromSpecificNodeModulesDirectory (/Users/mng/Documents/UI-shared-library/node_modules/typescript/lib/typescript.js:45350:27) at loadModuleFromImmediateNodeModulesDirectory (/Users/mng/Documents/UI-shared-library/node_modules/typescript/lib/typescript.js:45301:58) at /Users/mng/Documents/UI-shared-library/node_modules/typescript/lib/typescript.js:45291:39 at Object.forEachAncestorDirectory (/Users/mng/Documents/UI-shared-library/node_modules/typescript/lib/typescript.js:8224:26) at loadModuleFromNearestNodeModulesDirectoryWorker (/Users/mng/Documents/UI-shared-library/node_modules/typescript/lib/typescript.js:45285:19) at loadModuleFromNearestNodeModulesDirectory (/Users/mng/Documents/UI-shared-library/node_modules/typescript/lib/typescript.js:45277:16) at tryResolve (/Users/mng/Documents/UI-shared-library/node_modules/typescript/lib/typescript.js:44363:34)
相关配置文件
rollup.config.js
import nodeResolvePlugin from "@rollup/plugin-node-resolve"; import { defineConfig } from "rollup"; import PeerDepsExternalPlugin from "rollup-plugin-peer-deps-external"; import typescript from "rollup-plugin-typescript"; import sassPlugin from "rollup-plugin-sass"; import commonjsPlugin from "@rollup/plugin-commonjs"; const config = defineConfig({ input: "./src/index.ts", output: [ { file: "bundle.js", format: "es", sourcemap: true, }, ], plugins: [ PeerDepsExternalPlugin(), nodeResolvePlugin(), commonjsPlugin(), sassPlugin({ insert: true, }), typescript(), ], }); export default config;
package.json 依赖项
"dependencies": { "@babel/core": "^7.20.5", "@babel/preset-env": "^7.21.4", "@babel/preset-react": "^7.18.6", "@babel/preset-typescript": "^7.23.3", "@emotion/styled": "^11.11.0", "@mui/material": "^5.14.17", "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "^15.2.3", "@testing-library/jest-dom": "^5.14.1", "@testing-library/react": "^13.0.0", "@testing-library/user-event": "^13.2.1", "@types/jest": "^27.0.1", "@types/node": "^16.7.13", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "babel-loader": "^9.1.3", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", "rollup": "^2.79.1", "rollup-plugin-sass": "^1.12.21", "sass": "^1.69.5", "web-vitals": "^2.1.0" }, "devDependencies": { "@storybook/addon-essentials": "^7.5.3", "@storybook/addon-interactions": "^7.5.3", "@storybook/addon-links": "^7.5.3", "@storybook/addon-onboarding": "^1.0.8", "@storybook/blocks": "^7.5.3", "@storybook/preset-create-react-app": "^7.5.3", "@storybook/react": "^7.5.3", "@storybook/react-webpack5": "^7.5.3", "@storybook/testing-library": "^0.2.2", "babel-plugin-named-exports-order": "^0.0.2", "eslint-plugin-storybook": "^0.6.15", "prettier": "3.1.0", "prop-types": "^15.8.1", "rollup-plugin-peer-deps-external": "^2.2.4", "rollup-plugin-typescript": "^1.0.1", "rollup-plugin-typescript2": "^0.36.0", "storybook": "^7.5.3", "tslib": "^2.6.2", "typescript": "^4.9.5", "webpack": "^5.89.0" }
tsconfig.json
{ "compilerOptions": { "target": "es5", "lib": [ "dom", "dom.iterable", "esnext" ], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "strict": true, "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true, "module": "esnext", "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", "noUnusedLocals": false, "rootDir": "src" }, "include": [ "**/*.ts" ], }
tsconfig.rollup.json
{ "compilerOptions": { "composite": false, "declaration": false }, "files": ["./rollup.config.ts"] }
解决方案
将TypeScript从4.9版本降级至4.8版本即可解决该问题。
内容的提问来源于stack exchange,提问作者MatTaNg
相关产品推荐
相关产品推荐

