我在与一个人一起工作时遇到了这个问题云铸造样品 http://support.cloudfoundry.com/entries/505133-deploying-a-node-js-app-with-npm-dependencies。他们告诉您添加的违规行是:
require.paths.unshift('./node_modules')
这显然是告诉节点在什么路径中搜索模块的一种方式require
,在您不提供显式路径的情况下。我在某处读到,当您传入的字符串不以点或斜线开头时。
据我所知,这是让 Node 0.4 应用程序在 node_modules 目录中搜索所必需的。但在 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
(etc.)
顺便说一句...如果有必要双重支持需要 require.paths 的旧版本节点,则可以根据测试有条件地运行该线路process.version
:
http://nodejs.org/docs/v0.4.9/api/process.html#process.version http://nodejs.org/docs/v0.4.9/api/process.html#process.version