3

我想尝试一些 node.js 的东西,我昨天按照网上某人的说明安装了它,它启动并运行了,我在屏幕上显示了标准的 Hello World 网页。

我现在转到另一个示例,但为了不弄乱我的主目录,我在其中创建了一个目录(~/node)并在其中创建了我需要的文件。瞧,当运行服务的时候,我没有高兴地说express找不到模块。

说明告诉我使用-g标志安装 express,但这没有帮助。我什至在没有任何运气的情况下再次运行它。

现在我发现了这个: 找不到模块`express` | socket.io [node.js]

看来我必须在当前目录下再次安装它。我已经做到了,并且有效。是否必须将其安装在我希望从中运行服务的每个目录下?这似乎是不必要的重复。

编辑:

对js不太了解我以为我会去挖掘发现

app.use(express['static'](__dirname ));

并意识到这可能是我的问题的原因。进一步的研究发现:http ://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders如果我将它安装在更高级别的目录中,那应该“解决”我的问题。我不会为卸载模块而烦恼,但对于我的下一个项目,我将尝试它,看看它是如何进行的。

我不知道为什么原作者-g在安装 express 时建议使用该标志,因为它似乎对我不起作用。

4

4 回答 4

5

NPM 是一个非常好的工具,允许您在本地和全局安装 node.js 模块。

本地模块安装

如果你想为你的项目使用一个模块,你必须在本地安装它。这就是npm在项目目录中创建一个名为 node_modules 的子目录的原因。如果你对两个不同的项目使用相同的模块,npm 会下载该模块并安装两次。这很正常,它可以帮助您管理同一依赖项的不同版本。

为特定项目管理依赖项和安装模块的最佳方法是使用您的依赖项填充 package.json并使用安装它们

npm install

在您的项目目录中。

要访问代码中的模块,请使用require()函数。例如,使用 expressjs :

var express = require('express');
var app = express();
...

全局模块安装

npm还允许您在全局范围内安装模块。但请记住,全局安装模块只会在终端中提供更多命令,就像 expressjs 和 express(1) 一样。

为了全局安装 expressjs,在你的终端中运行它

npm install -g express

如果您想在特定项目中使用全局安装的模块,您还必须在本地安装它(在您的项目目录中,不带 -g)。

我希望这能清楚地回答你的问题。

于 2013-07-22T09:39:15.970 回答
1

Express 能够在全局安装时生成简单的应用程序结构。请参阅此链接并滚动到使用 express(1) 生成应用程序部分。这是让您轻松入门的好方法。

于 2013-07-22T03:40:25.080 回答
0

看看nodejitsu 中的package.json , package.json

所有 npm 包都包含一个文件,通常位于项目根目录中,名为 package.json - 该文件包含与项目相关的各种元数据。该文件用于向 npm 提供信息,使其能够识别项目并处理项目的依赖项

一个package.json例子:

{
    "name": "CRUD",
    "description": "A simple CRUD",
    "author": "Only for learn",
    "dependencies": {
        "express": "*",
    },
}

所以安装dependenciesgo to levelpackage.json就是,运行npm install这个将安装所有dependencies你需要的project.

编辑 交互式package.json 指南

于 2013-07-22T03:30:32.147 回答
0

我发现在设置 node.js 项目和依赖项时,使用Grunt [http://gruntjs.com/] 有很多优势。尽管有很多不同的方法来设置节点和表达项目,但对于使用 Douglas Crockford 方法和“顺其自然”有很多话要说。在这种情况下,Grunt 是一种谷物,因为它正在成为设置节点项目的事实上的标准,并且存在用于最常见类型的 node.js 项目的现有模板。你可以在这里找到 Grunt Express [https://github.com/blai/grunt-express]。

在这种情况下,Grunt 将为您提供与其他项目结构一致的项目结构,为节点包管理器设置依赖文件并为您自动生成 express 项目。包保存在 node_modules 目录中。如果您熟悉 Maven,您可能会认识到“约定优于配置方法”。

于 2013-07-22T08:41:46.090 回答