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

使用require.js加载AMD模块时遇rjs.config is not a function错误求助

解决rjs.config is not a function错误

项目结构

src
 |- main.js
 |- math.js

math.js是一个AMD模块,我在main.js中引用它。已通过npm安装require.js,并在main.js中引入:

main.js代码

//main.js

var rjs = require('requirejs');

rjs.config({
  //Pass the top-level main.js/index.js require
  //function to requirejs so that node modules
  //are loaded relative to the top-level JS file.
  nodeRequire: require,
  
});

rjs(["./math.js"], function(math) {
  console.log(math.add(2, 3));
});

math.js代码

//math.js

define("math", function() {
  function add(a, b) {
    return a + b;
  }
  function subtract(a, b) {
    return a - b;
  }
  function multiply(a, b) {
    return a * b;
  }
  function divide(a, b) {
    return a / b;
  }
  
  return { add, subtract, multiply, divide };
});

错误信息

执行r.js ./src/main.js命令时,出现以下错误:

rjs.config is not a function
    at /Users/dheerajmahra/Desktop/learning/different-module-formats/src/main.js:3:5
    at /Users/dheerajmahra/Desktop/learning/different-module-formats/src/main.js:14:2
    at Script.runInThisContext (vm.js:96:20)
    at Object.runInThisContext (vm.js:303:38)
    ....

问题原因与解决方法

核心问题

你混淆了r.js和RequireJS在Node环境中的用法:

  • require('requirejs')返回的RequireJS实例支持config方法,这是给Node直接执行脚本使用的。
  • r.js是AMD模块的打包优化工具,并非用来直接运行Node脚本的工具,用它执行main.js会打乱RequireJS的加载逻辑,导致rjs.config方法不存在。

具体解决步骤

  1. 直接运行脚本:放弃用r.js执行main.js,改用Node命令直接运行:
node src/main.js
  1. 若需打包模块:如果是想用r.js打包AMD模块,需单独创建打包配置文件(比如build.js),示例如下:
// build.js
({
  baseUrl: 'src',
  name: 'main',
  out: 'dist/main-built.js'
})

然后执行打包命令:

r.js -o build.js
  1. 优化模块引用:math.js定义了具名模块"math",在main.js中可以直接用模块名引用,避免路径问题:
rjs(["math"], function(math) {
  console.log(math.add(2, 3));
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:35:24