【问题标题】:Using whenjs with requirejs将 whenjs 与 requirejs 一起使用
【发布时间】:2014-10-08 21:46:59
【问题描述】:

我无法将 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/when 复制到 app/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 指令没有说 to。

我试过这个:

//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) {

这不会产生和错误 - 尽管我还没有尝试使用该库...

Requirejs的版本是v2.1.8,我看过the API instructions regarding packages but I'm none the wiser。这是什么意思 whenjs 指令在这里不起作用?我也尝试过其他设置组合,例如组合 paths 和 packages 选项,但无济于事。

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

非常感谢任何帮助。

【问题讨论】:

  • 我真的不知道为什么我对此投了反对票。请记住添加评论并投反对票 - 重点是鼓励提出更好的问题,因此请提示需要更改的内容!

标签: javascript requirejs when-js


【解决方案1】:

尝试使用requirejs.config 的paths 属性: 如果你把when.js放在js/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'
    }
}

【讨论】:

  • 谢谢,非常感谢。我相当肯定whenjs必须按照他们的说明支持AMD,这就是为什么我觉得这很奇怪:/
猜你喜欢
  • 2014-10-06
  • 2023-04-09
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多