Linux node.js找不到模块xml2js
我在我的机器上做了一个应用程序,效果很好。我将其上载到服务器,它正在崩溃,出现以下错误:Linux node.js找不到模块xml2js,linux,node.js,include,Linux,Node.js,Include,我在我的机器上做了一个应用程序,效果很好。我将其上载到服务器,它正在崩溃,出现以下错误: node.js:116 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: Cannot find module 'xml2js' at Function._resolveFilename (module.js:289:11) at Function._load
node.js:116
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'xml2js'
at Function._resolveFilename (module.js:289:11)
at Function._load (module.js:241:25)
at require (module.js:317:19)
at Object.<anonymous> (/var/www/node/price/index.js:3:14)
at Module._compile (module.js:373:26)
at Object..js (module.js:379:10)
at Module.load (module.js:305:31)
at Function._load (module.js:271:10)
at Array.<anonymous> (module.js:392:10)
at EventEmitter._tickCallback (node.js:108:26)
我已经使用npm安装了express和xml2js。我的机器和服务器上的节点具有完全相同的版本(v0.4.0)
我已经确保xml2js和express驻留的路径(/usr/local/lib/node/)包含在node查找模块的路径中。(我编辑了文件'module.js'以打印它查找模块的路径。)
node.js:116
抛出e;//process.nextTick错误,或第一次勾选时的“error”事件
^
错误:在路径:/root/.node\u modules、/root/.node\u库、/usr/local/lib/node、/var/www/node/price/node\u modules、/var/www/node/node\u modules、/var/www/node\u modules、/var/node\u modules、/node\u modules中找不到模块“xml2js”
at函数。\u解析文件名(module.js:289:11)
at功能。加载(模块js:241:25)
根据需要(module.js:317:19)
反对。(/var/www/node/price/index.js:3:14)
在模块处编译(Module.js:373:26)
at Object..js(module.js:379:10)
在Module.load(Module.js:305:31)
at功能。加载(模块js:271:10)
在阵列上。(模块js:392:10)
在EventEmitter上进行回调(node.js:108:26)
那怎么了?我有正确的路径,模块在那里。为什么节点找不到它?完全相同的代码在我本地的机器上平稳运行。如果有必要,我的机器是Mac,服务器运行CentOS。尝试将其安装在项目中,而不是全局包目录中
如果您使用
package.json
来管理依赖关系,那么您可以在项目目录中运行npm bundle
,然后在应用程序文件顶部添加require.path.unshift('./node\u modules')
。在我看来,这是所有项目的最佳实践(特别是考虑到节点开发的速度)。节点0.4改变了它的方式和功能。节点0.4在/node\u模块中查找模块。
对我来说,只需将模块目录链接到我的项目目录,并使用ln-s/usr/local/lib/node node_modules
我想简单的答案是xml2js和xml2js xpat的当前包被破坏了
我最终改用了节点xml。我希望xml2js不是我第一个尝试安装的npm模块。正如spmason提到的,Node改变了模块的解析方式。我遇到了与您相同的问题,通过全局安装所有模块(--global
)并在需要任何模块之前向require添加/usr/local/lib/node_模块
解决了此问题:
require.paths.push('/usr/local/lib/node_modules');
require('blah'); // it works!
只需制作ln-s/usr/local/lib/node/usr/local/lib/node_模块
,但在将node_模块的内容
移动到原始节点库node
之前,它帮助了我:)
对于节点v0.8.1及以上版本不再有效。您可以设置环境变量NODE\u PATH,而不是使用require.PATH.push
export NODE_PATH=/usr/local/lib/node_modules
或者,如果您在主目录中安装了npm模块,则
export NODE_PATH=~/.npm
就我个人而言,我发现XML2JS模块需要通过npm本地安装。虽然我只在Windows上尝试过这一点,但我写了一篇博文尝试安装带有-g
标志的npm包,使其成为全局的
npm安装-g程序包\u名称
可能相关:在windows环境中,npm将模块安装到登录用户的c:/documents and settings文件夹中。。对我来说,我必须在app.js的根目录中创建一个新的“node_modules”文件夹,并将xml2js或其他模块文件夹复制到新的node_modules文件夹中。解决此问题的方法是添加npm安装全局路径(在Windows中)如果要从0.3.*grunt升级到0.4.*grunt,请运行以下命令:npm install xml2js--save dev
require.paths.push('/usr/local/lib/node_modules');
export NODE_PATH=/usr/local/lib/node_modules
export NODE_PATH=~/.npm