我最近安装了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的符号链接。
答案 0 :(得分:4)
总之,是的,这是通常的行为。
当您使用带有-g选项的NPM安装软件包时,它会全局安装它,这样可以在您的路径上放置可执行文件(例如您使用的快速脚本)。
然而,不将这些软件包放在节点可以找到它们的任何地方。
要安装它以便节点可以找到包,您还必须
cd "your express app"
npm install express
在本地安装(到应用程序目录的根目录中的node_modules文件夹)。
这主要是为了避免任何依赖性冲突,虽然看起来很愚蠢,但实际上它确实非常有用。
如果您有一些真正的理由想要使用全局安装(例如,您有许多应用程序要确保始终共享相同版本),则可以使用npm link命令。
有关NPM和全球与本地的详细信息,请参阅this博文。
答案 1 :(得分:1)
如果您使用的是Windows,请在路径中添加位置。
export NODE_PATH="C:\Users\IMarek\AppData\Roaming\npm\node_modules"
将IMarek
更改为您的用户名。