You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:48:13