RequireJS搜索app.app而不是app.js(其中app.js是data-main中指定的入口点)

时间:2014-11-08 10:17:41

标签: javascript node.js express requirejs

问题:

我有一个使用requireJS的简单演示应用程序。加载require.min.js脚本时,它会尝试加载入口点脚本。但是,问题是代替localhost:8090/js/app.js而是尝试加载localhost:8090/js/app.app并失败。

演示:您可以在GitHub看到整个应用。

===只有你不喜欢GutHub,这是我的代码===

文件结构

ProjectRoot
 |-server.js
 |-public/
    |-index.html
    |-js/
       |-app.js
       |-lib/
          |-require.min.js
          |-underscore.js
          |-backbone.js
          |-raphael.js
       |-app/
          |-..

server.js:

var express = require('express');
var app = express();
app.use('/', express.static(__dirname + '/public'));
app.listen(8090);

的index.html:

<!DOCTYPE html>
<html>
  <body>
  </body>
  <script src="js/lib/require.min.js" data-main="js/app.js"></script>
</html>

app.js:

require.config({
    paths: {
        'jquery': 'lib/jquery',
        'raphael': 'lib/raphael'
    },
    shim: {
        'lib/underscore': {
            exports: '_'
        },
        'lib/backbone': {
            deps: ["lib/underscore", "jquery"],
            exports: 'Backbone'
        }
    }
});

1 个答案:

答案 0 :(得分:2)

您的应用中包含的require.js版本存在问题。使用CDN,它可以工作。

您的代码中的版本与CDN上的实际.min版本不匹配,这意味着它已被修改并包含.app

<script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.15/require.js" data-main="js/app"></script>