Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux node.js找不到模块xml2js_Linux_Node.js_Include - Fatal编程技术网

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