【问题标题】:Trouble with RequireJS on NodeNode 上 RequireJS 的问题
【发布时间】:2013-01-26 15:34:53
【问题描述】:

我正在尝试使用 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..." );
  });

});

然后,我有一个像这样的应用程序文件......

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; ^ 类型错误:无法调用未定义的方法“侦听” 在 /home/ssp/boot.js:13:7 在 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) 在 Object.Module.enable (/home/ssp/node_modules/requirejs/bin/r.js:1239:22) 在 Object.Module.init (/home/ssp/node_modules/requirejs/bin/r.js:882:26) 在 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# 节点启动

timers.js:103 if (!process.listeners('uncaughtException').length) throw e; ^ 类型错误:无法调用未定义的方法“侦听” 在 /home/ssp/boot.js:13:7 在 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) 在 Object.Module.enable (/home/ssp/node_modules/requirejs/bin/r.js:1239:22) 在 Object.Module.init (/home/ssp/node_modules/requirejs/bin/r.js:882:26) 在 Object.context.makeRequire.mixin.isBrowser [as _onTimeout] (/home/ssp/node_modules/requirejs/bin/r.js:1505:36) 在 Timer.list.ontimeout (timers.js:101:19)

有人对我缺少的东西有什么建议吗?

谢谢!

【问题讨论】:

    标签: javascript node.js express requirejs


    【解决方案1】:

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

    【讨论】:

    • requirejs 在客户端非常好,为了保持一致性,我想在服务器端做同样的事情。 RequireJS 通常用于此目的,所以我想弄清楚我做错了什么,而不是使用解决方法。
    • 这是服务器端的。
    • 是的,服务器端的 RequireJS。如果我可以让它工作,我认为它是一种比默认的 commonJS 模式节点使用的更好的模块化代码方式。
    • 嘿!这就是我要说的。您想在服务器端为您的 Express 应用程序使用 RequireJS。 express 命令行可执行文件将使用 RequireJS 为您设置一个应用程序。然后,您将能够在您通过 npm 安装的任何其他模块上调用 require。 express 可执行文件创建的 app.js 文件包含行 var express = require('express');
    • 我认为有些混乱。据我所知,快速生成站点骨架不会安装 requirejs (requirejs.org),这是一个不同的模块加载器。 (requirejs != 要求)
    【解决方案2】:

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

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

    在您的应用文件中:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多