使用Rollup执行命令时遇TypeError路径参数类型错误求助
解决Rollup运行时的TypeError: "path"参数必须为字符串类型错误
问题场景
执行命令rollup -c --config rollup.config.js时,触发如下TypeError错误:
[!] TypeError: The "path" argument must be of type string. Received an instance of Array at new NodeError (node:internal/errors:400:5) at validateString (node:internal/validators:163:11) at Object.resolve (node:path:1102:7) at getConfigPath (/Users/PROJECT_PATH/packages_node/packages/socket.io-controllers/node_modules/rollup/dist/bin/rollup:1593:22) at getConfigs (/Users/PROJECT_PATH/packages_node/packages/socket.io-controllers/node_modules/rollup/dist/bin/rollup:1683:34) at runRollup (/Users/PROJECT_PATH/packages_node/packages/socket.io-controllers/node_modules/rollup/dist/bin/rollup:1661:49) at Module.<anonymous> (/Users/PROJECT_PATH/packages_node/packages/socket.io-controllers/node_modules/rollup/dist/bin/rollup:1708:5) at Module._compile (node:internal/modules/cjs/loader:1218:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1272:10) at Module.load (node:internal/modules/cjs/loader:1081:32)
原Rollup配置文件
const dts = require("rollup-plugin-dts"); const esbuild = require("rollup-plugin-esbuild"); const name = require("./package.json").main.replace(/\.js$/, ""); const bundle = (config) => { return { ...config, input: "src/index.ts", external: (id) => !/^[./]/.test(id), }; }; export default [ bundle({ plugins: [esbuild()], output: [ { file: `${name}.js`, format: "es", }, { file: `${name}.mjs`, format: "cjs", }, ], }), bundle({ plugins: [dts()], output: { file: `${name}.d.ts`, format: "es", }, }), ];
依赖版本信息
{ ... "rollup": "^3.21.5", "rollup-plugin-dts": "^5.3.0", "rollup-plugin-esbuild": "^5.0.0", ... }
已尝试的无效修改
使用path模块规范化路径后,问题仍未解决,修改后的配置如下:
const path = require("path"); const dts = require("rollup-plugin-dts"); const esbuild = require("rollup-plugin-esbuild"); const name = require("./package.json").main.replace(/\.js$/, ""); const bundle = (config) => { return { ...config, input: path.resolve(__dirname, "src/index.ts"), external: (id) => !/^[./]/.test(id), }; }; export default [ bundle({ plugins: [esbuild()], output: [ { file: path.resolve(__dirname, `${name}.js`), format: "es", }, { file: path.resolve(__dirname, `${name}.mjs`), format: "cjs", }, ], }), bundle({ plugins: [dts()], output: { file: path.resolve(__dirname, `${name}.d.ts`), format: "es", }, }), ];
最终解决方法
错误的核心原因是命令行参数重复:-c是--config的简写形式,同时传递两个参数会导致Rollup的参数解析逻辑混乱,误将配置文件路径识别为数组类型,从而抛出TypeError。
只需使用以下任一命令执行即可:
rollup -c rollup.config.jsrollup --config rollup.config.js
内容的提问来源于stack exchange,提问作者Ron Rofe
相关产品推荐
相关产品推荐

