我正在尝试将 express 安装到我当前的“目录”中。
但是 node 全局安装它,我不明白,我怎么能告诉 node 将它安装在我的当前目录中。
2 回答
当我还是终端菜鸟时,我问过这个问题。解决方案很简单:
cd(使用命令行导航)到要安装模块的目录,然后它应该可以正常工作。首先是个好主意npm init
。
我在我的项目目录中安装节点模块时遇到了类似的问题,即使我没有指定“-g”全局标志。在 Linux 上,我在当前目录中安装的任何软件包最终都会安装到 ~/node_modules(即 /home/user/node_modules)中。
原因和修复在当前目录中 npm install 模块的线程中进行了解释。简而言之,npm 在目录中查找 node_modules 子目录
npm 安装
被调用。如果没有找到,npm 会继续向上移动,搜索该目录的祖先,直到找到 node_modules。假设是一个Linux系统,如果在当前用户家的最上层,即/home/user中没有找到,就会在当前目录下创建node_modules,这是必须的行为。但是我已经有一个 ~/node_modules 目录,它不允许这种情况发生。
解决方法是先运行
npm 初始化
在当前目录中,它以交互方式创建一个 package.json 文件,该文件告诉 npm 我们正在该目录中创建一个包,并且任何依赖项都需要在包的本地,因此需要在本地安装 node_modules/ 并因此在本地安装节点包.
在创建 package,json 之后,在该目录中运行的安装命令将在本地安装 express 等包。