NPM基础知识与nave和Node.js
我最近安装了node.js,并被告知express是用于路由和设置Web应用程序开发的方法。
我安装了最新版本的节点,显然与最新的快递不兼容。
我查了一下,找到了nave ...就像RVM一样,nave允许你切换节点的版本。所以我跑了nave.sh install 0.4.11...
那个成功地工作了,我能跑了。
npm install express -g
我想,应该全球安装快递。所以我跑:
express testapp
这创造了
create : testapp
create : testapp/package.json
create : testapp/app.js
create : testapp/public/stylesheets
create : testapp/public/stylesheets/style.css
create : testapp/public/images
create : testapp/public/javascripts
create : testapp/views
create : testapp/views/layout.jade
create : testapp/views/index.jade
然后我
cd testapp/
node app.js
我明白了
错误:找不到模块'express'
这是通常的行为吗?
由于express在packages.json中,如果我运行npm install -d
,它将在我的应用程序中创建一个node_modules目录,而不仅仅是我的节点路径中的node_modules的符号链接。
总之,是的,这是通常的行为。
当您使用带有-g选项的NPM安装软件包时,它会全局安装它,这样可以在您的路径上放置可执行文件(例如您使用的快速脚本)
但是,它不会将这些包放在节点可以找到它们的任何位置。
要安装它以便节点可以找到包,您也必须这样做
cd "your express app"
npm install express
它安装在本地(到应用程序目录的根目录中的node_modules文件夹)。
这主要是为了避免任何依赖性冲突,虽然看起来很愚蠢,但实际上它确实非常有用。
如果您有一些真正的理由想要使用全局安装(例如,您有许多应用程序要确保始终共享相同的版本),则可以使用npm link命令。
有关NPM和全球与本地的良好纲要,请参阅this博客文章。