node.js - 如何在 Node 中导入全局模块?我得到 "Error: Cannot find module <module>"?

标签 node.js npm

我正在尝试在 Mac OSX Lion 上设置 Node。一切似乎都正常,但我似乎无法从我的全局模块文件夹中导入任何模块。我得到了错误,

Error: Cannot find module <module>

如果我运行这个:node -e require.paths,我得到的响应是:

[ '/usr/local/lib/node_modules',
  '/Users/Me/.node_modules',
  '/Users/Me/.node_libraries',
  '/usr/local/Cellar/node/0.4.12/lib/node' ]

这是正确的,我的模块确实安装在/usr/local/lib/node_modules 中。但是,当我尝试运行脚本时,我得到了这个:

Error: Cannot find module 'socket.io'
    at Function._resolveFilename (module.js:326:11)
    at Function._load (module.js:271:25)
    at require (module.js:355:19)
    at Object.<anonymous> (/Users/Me/node/server.js:2:10)
    at Module._compile (module.js:411:26)
    at Object..js (module.js:417:10)
    at Module.load (module.js:343:31)
    at Function._load (module.js:302:12)
    at Array.<anonymous> (module.js:430:10)
    at EventEmitter._tickCallback (node.js:126:26)

我的 .bash_profile 如下所示:

export PATH=/usr/local/mysql/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"

非常感谢一些帮助,我不知道为什么我不能导入任何库。

最佳答案

Node.js 使用环境变量 NODE_PATH 来允许指定要包含在模块搜索路径中的其他目录。您可以使用 npm 本身通过 npm root -g 命令告诉您全局模块的存储位置。因此,将这两者放在一起,您可以使用以下命令(在 Linux-ish 上)确保全局模块包含在您的搜索路径中

export NODE_PATH=$(npm root --quiet -g)

关于node.js - 如何在 Node 中导入全局模块?我得到 "Error: Cannot find module <module>"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7970793/

相关文章:

node.js - 如何在 Windows 10 上的 Docker 中公开端口?

javascript - Socket.IO:断开连接时的 XHR 轮询延迟

arrays - 如何在 Node.js 中通过 Mongoose 使用点(.) 进行查询以及如何添加空数组

mysql - 如何将sql server连接到app.js文件?

javascript - 尝试导入错误 : 'app' is not exported from 'firebase/app' (imported as 'firebase' )

node.js - 如何强制 NPM 使用本地托管的注册表

node.js - 如何访问 mongoose 中的字段名称 $aggregate->$lookup-> pipeline->$match

node.js - 在 EC2 实例上使用 Cloud9 IDE

javascript - 当 "npm install"退出时 "node_modules"会做什么?

node.js - 如何写入全局安装的 Node 模块中的文件?