node require can't find module(适用于mac或linux,不支持window)

Table of Contents

前言

我已经正确的安装了node,并且我使用npm install -g 安装包没有出错,但是就是在代码中导入包的时候使用require('安装包')报错,我的全局模块路径是在/usr/local/lib/node_modules下面

原因分析

可能是node命令早不到npm的安装包的安装目录,于是我打印了node默认的模块目录:

node
module.paths
[ '/Users/用户名/repl/node_modules',
  '/Users/用户名/node_modules',
  '/Users/node_modules',
  '/node_modules',
  '/Users/用户名/.node_modules',
  '/Users/用户名/.node_libraries',
  '/usr/local/lib/node' ]

我发现,/usr/local/lib/node_modules目录并没有包含在里面,于是我使用下面的命令:

module.paths.push('/usr/local/lib/node_modules')

虽然这个命令生效了,但它是暂时性的。但我并不知道如何永久的把我的模块目录添加进去。 为了解决这个问题,我使用软链接的来解决这个问题。

解决方案

ln -sfn /usr/local/lib/node_modules /Users/$USER/node_modules

由于根据npm WARN checkPermissions Missing write access to /usr/local/lib/node_modulesnode_module目录的拥有者是当前用户,所以没有必要使用sudo命令.