我在使用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