Javascript RequireJS:Module';X';具有与输出路径相同的源路径

Javascript RequireJS:Module';X';具有与输出路径相同的源路径,javascript,configuration,requirejs,Javascript,Configuration,Requirejs,我正在使用grunt构建我的资产,我的Gruntfile.js配置如下: requirejs: { build: { options: { almond: true, appDir: '.tmp', findNestedDependencies: true, mainConfigFile: '.tmp/scripts/config.js', modules: [ { name: 'mod' },

我正在使用grunt构建我的资产,我的
Gruntfile.js
配置如下:

requirejs: {
  build: {
    options: {
      almond: true,
      appDir: '.tmp',
      findNestedDependencies: true,
      mainConfigFile: '.tmp/scripts/config.js',
      modules: [
        { name: 'mod' },
      ],
      dir: 'public',
      optimize: 'uglify',
      optimizeCss: 'standard',
      preserveLicenseComments: false,
      relativeUrl: './',
      skipDirOptimize: true,
      useStrict: true
    }
  }
},
因此,从技术上讲,配置告诉RequireJS在
public/scripts/mod.js
中构建模块,而不是
.tmp/scripts/mod.js

为什么RequireJS坚持路径与输出相同?

Running "requirejs:build" (requirejs) task
{ [Error: Error: Module ID 'mod' has a source path that is same as output path: /Users/ivan/project/.tmp/scripts/mod.js. Stopping, config is malformed.
    at /Users/ivan/project/node_modules/requirejs/bin/r.js:25834:39
]
  originalError: [Error: Module ID 'mod' has a source path that is same as output path: /Users/ivan/project/.tmp/scripts/mod.js. Stopping, config is malformed.] }

看起来,您只有一个要优化的模块-您不应该使用模块。试试这个:

requirejs: {
  build: {
    options: {
      almond: true,
      findNestedDependencies: true,
      mainConfigFile: '.tmp/scripts/config.js',
      name : 'mod'
      out: 'public/result.js',
      optimize: 'uglify',
      optimizeCss: 'standard',
      preserveLicenseComments: false,
      relativeUrl: './',
      skipDirOptimize: true,
      useStrict: true
    }
  }
},

这应该行得通。我希望,我很了解你的配置。如果没有-请告诉我。

这似乎是一个错误,设置buildPath和sourcePath会导致引发异常。你可以尝试使用早期版本的r.js来解决这个问题。

我实际上也遇到过同样的问题,上一篇文章的作者是对的:这是一个与在构建过程中重写源文件相关的r.js问题

如我所见,他们添加了一个配置选项
allowSourceOverwrites
来修复它:


将其设置为
true
对我有帮助,希望能帮助其他人。

事实上,我正在创建多个模块。我只是将它们从配置中删除,以简化上面的示例。我尝试了您建议的方法,并且效果良好。但只构建一个模块。我想我可以进行多个配置,在我的配置中,每个模块使用并发配置。谢谢@IvanTorres我认为,您的示例中的主要问题是
appDir
字段。可能您不需要指定它-您仍然需要指定mainConfigFile。
relativeUrl
是实际选项吗?我在文档或源文件中找不到对它的任何引用。