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

使用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.js
  • rollup --config rollup.config.js

内容的提问来源于stack exchange,提问作者Ron Rofe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:05:41