配置从node_modules读取的requirejs

GTD*_*Dev 16 javascript node.js coffeescript requirejs node-modules

我正在尝试设置nodejs项目以使用requirejs.我用我的程序调用node r.js ./config/main.js,我的main.js如下所示:

var cs = require("coffee-script");
var requirejs = require("requirejs");

requirejs.config({
  nodeRequire: require,
  baseUrl: ".",
  paths: {
    cs: "cs",
    CoffeeScript: "CoffeeScript",
    csBuild: "csBuild",

    express: "express",
    nohm: "nohm",
    redback: "redback",
    _: "underscore",
    "connect-redis": "connect-redis",
    freebase: "freebase"
   }
});

console.log("hetet");
requirejs(["cs!./config/app"], function(app){
  console.log("closing")
});
Run Code Online (Sandbox Code Playgroud)

在app.coffee里面:

define((require) ->

  express = require("express")

  RedisStore = require("connect-redis")(express)
  app = express.createServer()

  config = require('cs!./config')

  require('cs!./setup')(app, express, RedisStore)
  require('cs!./routes')(app)
  require('cs!../src/server')

  app.listen(config.server.port)
)
Run Code Online (Sandbox Code Playgroud)

我似乎在main.js中失败并出现错误:

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Calling node's require("config") failed with error: Error: Calling node's require("config") failed with error: Error: Cannot find module 'config'
Run Code Online (Sandbox Code Playgroud)

而且我注意到的是当我注释掉这一行var requirejs = require("requirejs");(在main.js中)时,我在行(在app.coffee中)进一步失败并出现RedisStore = require("connect-redis")(express)错误:

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
TypeError: undefined is not a function
    at ./config/app.coffee:10:41
Run Code Online (Sandbox Code Playgroud)

我在节点中配置requirejs时遇到了很多麻烦,任何帮助都会受到赞赏.

谢谢

jrb*_*rke -4

最好不要将 requirejs 配置为在 node_modules 中查找,因为该区域中的模块是针对 Node 格式化的模块。requirejs 节点页面中有更多信息。

  • 仅供参考,这并不完全正确。npm 并不严格适用于仅节点模块。有大量 npm 可安装模块可以在浏览器中正常工作,或者有可供浏览器使用的替代模块。该模块通常在“package.json”文件的“browser”键中指定。 (8认同)
  • `npm install underscore jquery` 这些库是以“跨平台”方式打包的,以使它们对 AMD 友好(requirejs) (2认同)
  • umd 模块存在——问题没有答案 (2认同)