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

使用Webpack构建k6 API项目时遇配置错误求助

问题描述

我有一个基于Node.js开发的k6 API调用项目,使用Webpack构建时出现配置错误。错误提示Webpack初始化的配置对象不符合API schema,具体是configuration.resolve.fallback['path']的配置不符合要求。

错误日志

k6-api@1.0.0 start
webpack && node src/index.js
[webpack-cli] Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.
configuration.resolve.fallback should be one of these:
   [object { alias, name, onlyModule? }, ...] | object { <key>: [non-empty string, ...] | false | non-empty string }
   -> Redirect module requests.
   Details:
    * configuration.resolve.fallback['path'] should be one of these:
      [non-empty string, ...] | false | non-empty string
      -> New request.
      Details:
       * configuration.resolve.fallback['path'] should be an array:
         [non-empty string, ...]
         -> Multiple alternative requests.
       * configuration.resolve.fallback['path'] should be false.
         -> Ignore request (replace with empty module).
       * configuration.resolve.fallback['path'] should be a non-empty string.
         -> New request.

当前配置文件

webpack.config.js

import urlResolve from "url";
import fsResolve from "fs";
import pathResolve from "path-browserify";

export default {

    externals: {
    k6: "k6",
  },

  resolve: {
    fallback: {
      url: urlResolve,
      fs: fsResolve,
      path: pathResolve
  },
  },
};

package.json

{
    "name": "k6-api",
    "version": "1.0.0",
    "main": "index.js",
    "scripts": {
        "start": "webpack && node src/index.js",
        "swagger": "swagger-jsdoc -o swagger.json"
    },
    "dependencies": {
        "express": "^4.18.2",
        "k6": "^0.0.0",
        "path-browserify": "^1.0.1",
        "swagger-jsdoc": "^6.2.8",
        "url": "^0.11.3"
    },
    "type": "module",
    "devDependencies": {
        "@babel/core": "^7.24.0",
        "@babel/preset-env": "^7.24.0",
        "@types/express": "^4.17.21",
        "@types/k6": "^0.49.1",
        "babel-loader": "^9.1.3",
        "core-js": "^3.36.0",
        "webpack": "^5.90.3",
        "webpack-cli": "^5.1.4"
    }
}
解决方案

问题出在Webpack 5的resolve.fallback配置规则:该配置项要求每个键对应的值必须是非空字符串、false或者非空字符串数组,不能直接传入模块对象。原代码直接导入模块并赋值给fallback,违反了这个规则。

修改webpack.config.js如下:

export default {
  externals: {
    k6: "k6",
  },
  resolve: {
    fallback: {
      url: "url",
      fs: false,
      path: "path-browserify"
    },
  },
};

修改说明

  • 移除了对url、fs、path-browserify模块的直接导入,改用包名字符串作为fallback值,符合Webpack配置规范。
  • fs设置为false:Node.js和k6运行环境本身内置了fs模块,无需浏览器端替代包,设置为false让Webpack忽略该模块的fallback处理,避免冗余打包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:40:36