0

我无法将requirejs与whenjs一起使用,它在运行站点时会出现有关丢失文件的404错误。我正在按照whenjs README中的说明进行操作:

首先,我git submodule add https://github.com/cujojs/when在项目根目录中运行。

然后我在以下位置执行“使用包配置加载程序” app/public/js/main.js

requirejs.config({
  baseUrl: "js",
  packages: [
    {
      name: "when",
      path: "../../../when",
      main: "when"
    }
  ]
});

这留下以下目录布局:

project-root/
  app/
    public/
      js/
        main.js
        helpers/
          myhelper.js
  when/

需要whenjs的文件(myhelper.js)有:

define(['when'], function(When) {

这会产生错误

GET http://localhost:4580/js/when/when.js 404 (Not Found)

我尝试将 js 文件从复制project-root/whenapp/public/js/libs/when

project/
  app/
    public/
      js/
        main.js
        helpers/
          myhelper.js
        libs/
          when/

并使用以下代码:

//main.js
requirejs.config({
  baseUrl: "js",
  packages: [
    {
      name: "when",
      path: "libs/when",
      main: "when"
    }
  ]
});

//myhelper.js
define(['when'], function(When) {

产生相同的错误:

GET http://localhost:4580/js/when/when.js 404 (Not Found)

似乎其中的任何内容myhelper.js都忽略了packages声明-我不确定是否还有其他我应该做的事情?whenjs 指令没有说。

我试过这个:

//main.js
requirejs.config({
  baseUrl: "js",
  packages: [
    {
      name: "when",
      path: "libs/when",
      main: "when"
    }
  ],
  paths: {
    w: "./libs/when"
  }
});

//myhelper.js
define(['w/when'], function(When) {

这不会产生和错误 - 虽然我还没有尝试使用该库......</p>

Requirejs 的版本是 v2.1.8,我已经阅读了有关包的 API 说明,但我并不聪明。这是什么意思 whenjs 指令在这里不起作用?我也尝试过其他设置组合,例如组合pathsandpackages选项,但无济于事。

这不是一个仅 Node 或 javascript 的项目,因此不能选择剧烈移动目录。

任何帮助深表感谢。

4

1 回答 1

0

尝试使用 : 的paths属性,requirejs.config如果放在when.jsjs/libs/when/when.js,可以尝试:

    requirejs.config({
        paths: {
            'when': 'libs/when/when'
        }
    });
define(['when'], function(When) {...

如果您的 JavaScript 标记包含 , 您甚至不需要baseUrl它,但您可以根据需要指定它。

这应该可以解决库加载问题,但是如果 when.js 不支持 AMD,您可以shim在配置中添加:

shim: {
    'when': {
        exports: 'When'
    }
}
于 2013-10-25T07:17:36.100 回答