在Node上遇到RequireJS问题

时间:2013-01-26 15:34:54

标签: javascript node.js express requirejs

我尝试使用RequireJS根据此处的说明在我的节点项目中加载服务器端模块:http://requirejs.org/docs/node.html

我的启动文件如下所示:

var requirejs = require( "requirejs" );

requirejs.config({ nodeRequire: require });

requirejs([ "app" ], function( app ) {

  app.listen(80, function(){
    console.log( "We be shuffling..." );
  });

});

然后,我有一个像这样的app文件......

requirejs([

    "express"

  ], function ( express ) {

  var app = express();

  app.configure( "development", function(){
    app.use( express.errorHandler() );
  });

  return app;

});

...然而,这只会导致一堆错误:

  

timers.js:103               if(!process.listeners(' uncaughtException')。length)throw e;                                                                         ^ TypeError:无法调用方法' listen'未定义的       在/home/ssp/boot.js:13:7       at Object.context.execCb(/home/ssp/node_modules/requirejs/bin/r.js:1729:33)       在Object.Module.check(/home/ssp/node_modules/requirejs/bin/r.js:969:51)       at Object.Module.enable(/home/ssp/node_modules/requirejs/bin/r.js:1239:22)       at Object.Module.init(/home/ssp/node_modules/requirejs/bin/r.js:882:26)       at Object.context.makeRequire.mixin.isBrowser [as _onTimeout](/home/ssp/node_modules/requirejs/bin/r.js:1505:36)       在Timer.list.ontimeout(timers.js:101:19)root @ nodeapp:/ home / ssp #stode boot

     

timers.js:103               if(!process.listeners(' uncaughtException')。length)throw e;                                                                         ^ TypeError:无法调用方法' listen'未定义的       在/home/ssp/boot.js:13:7       at Object.context.execCb(/home/ssp/node_modules/requirejs/bin/r.js:1729:33)       在Object.Module.check(/home/ssp/node_modules/requirejs/bin/r.js:969:51)       at Object.Module.enable(/home/ssp/node_modules/requirejs/bin/r.js:1239:22)       at Object.Module.init(/home/ssp/node_modules/requirejs/bin/r.js:882:26)       at Object.context.makeRequire.mixin.isBrowser [as _onTimeout](/home/ssp/node_modules/requirejs/bin/r.js:1505:36)       在Timer.list.ontimeout(timers.js:101:19)

有没有人有任何我缺少的建议?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您的意图是使用express with express,为什么不使用自动设置脚本?有关如何使用npm设置express的说明,请参阅http://expressjs.com/guide.html#executable基本上,您只需在命令行中使用express。要求包含在设置中。

答案 1 :(得分:0)

你需要定义()你的“模块”应用程序,而不是使用requirejs(),因为你需要先声明你的模块。

var define = require("amdefine")添加到您的启动文件中。

并在您的app文件中:

define(["express" ], 
   function ( express ) {
     var app = express();
     app.configure( "development", function(){
     app.use( express.errorHandler() );
   }); 
   return app; 
});