错误:删除了require.paths。当运行node.js& socket.io

时间:2011-09-26 17:30:11

标签: javascript node.js socket.io

(JavaScript的) 我从github运行socket.io示例时遇到错误 https://github.com/LearnBoost/socket.io.git

当我跑步时 - >节点app.js 它说。 错误:删除了require.paths。请改用node_modules文件夹或NODE_PATH环境变量。

有人能告诉我什么错了吗? 这个错误总是出现在我试过的每个socket.io示例中。

3 个答案:

答案 0 :(得分:6)

我在使用cloud foundry sample时遇到了这个问题。他们告诉你包括的违规行是:

require.paths.unshift('./node_modules')

在您没有提供显式路径的情况下,这显然是一种告诉节点搜索模块require的路径的方法。我读到的地方是你传入的字符串不是以点或斜线开头的。

据我所知,在node_modules目录中进行Node 0.4应用程序搜索是必需的。但是在Node 0.6中你应该用你的环境和路径中的设置对它进行排序(虽然它似乎默认为我安装0.6)。

我遇到了麻烦,因为云部署在Node 0.4上,我的本地开发设置在Node 0.6上。让线路在本地坠毁,但让它在云上坠毁。我的解决方案是删除它并指示云使用0.6:

vmc push <appname> --runtime=node06

之后一切似乎都有效。 更好:我发现您可以编辑manifest.yml文件,告诉它在推送过程中自动执行此操作,无需命令行开关:

---
applications:
  .:
    name: myapp
    runtime: node06  # added this line
    framework:
      name: node
      info:
        mem: 64M
        description: Node.js Application
        exec: n

(等)

顺便说一句......如果有必要双重支持需要require.paths的旧版本节点,可以根据测试process.version有条件地运行该行:

http://nodejs.org/docs/v0.4.9/api/process.html#process.version

答案 1 :(得分:1)

可能你可以试试https://github.com/cloudhead/less.js/issues/320 这与你的问题类似。

答案 2 :(得分:0)

尝试这样的事情:

var dust = require('dustjs-helpers');

var compiled = dust.compile("Hello {name}!", "intro");

dust.loadSource(compiled);

dust.render("intro", {
    name: "Márcio"
}, function(err, out) {
    console.log(out);
});