4

我最近安装了 node.js,并被告知 express 是路由和设置 Web 应用程序开发的方法。

我安装了最新版本的 node 显然与最新的 express 不兼容。

我查了一下,发现 nave... 和 RVM 一样,nave 允许你切换节点的版本。所以我跑了nave.sh install 0.4.11...那成功了,我能跑了。

npm install express -g

我认为,应该全局安装 express。所以我跑:

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 在packages.json中,如果我运行npm install -d,它将在我的应用程序中创建一个 node_modules 目录,而不仅仅是指向节点路径中 node_modules 的符号链接。

4

2 回答 2

4

总之,是的,这是通常的行为。

当您使用带有 -g 选项的 NPM 安装软件包时,它会在全局范围内安装它,这会做一些好事,例如将可执行文件放在您的路径上(即您使用的快速脚本)

但是,它不会这些包放在节点可以找到它们的任何地方。

要安装它以便节点可以找到包,您还必须这样做

cd "your express app"
npm install express

它在本地安装(到应用程序目录根目录中的 node_modules 文件夹)。

这主要是为了避免任何依赖冲突,虽然它看起来很傻,但实际上它真的很有用。

如果您有真正的理由想要使用全局安装(例如,您有许多应用程序要确保始终共享相同的版本),您可以使用 npm link 命令。

有关 NPM 和全局与本地的详细介绍,请参阅博客文章。

于 2011-09-15T21:56:45.617 回答
1

如果您在 Windows 上,请将位置添加到您的路径。

导出 NODE_PATH="C:\Users\IMarek\AppData\Roaming\npm\node_modules"

更改:更改IMarek为您的用户名。

于 2012-09-17T21:24:17.853 回答