Node.js:express无法工作?

7
我安装了express,它运行得很好:
...
npm http 200 https://registry.npmjs.org/send/-/send-0.1.4.tgz
npm http GET https://registry.npmjs.org/fresh/0.2.0
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/fresh/0.2.0
npm http GET https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz
npm http 200 https://registry.npmjs.org/fresh/-/fresh-0.2.0.tgz
npm http 200 https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz
express@4.0.0 /usr/local/lib/node_modules/express
├── methods@0.1.0
├── parseurl@1.0.1
├── merge-descriptors@0.0.2
├── utils-merge@1.0.0
├── escape-html@1.0.1
├── debug@0.8.0
├── cookie-signature@1.0.3
├── range-parser@1.0.0
├── fresh@0.2.2
├── qs@0.6.6
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── path-to-regexp@0.1.2
├── type-is@1.0.0 (mime@1.2.11)
├── send@0.2.0 (mime@1.2.11)
├── accepts@1.0.0 (mime@1.2.11, negotiator@0.3.0)
└── serve-static@1.0.1 (send@0.1.4)

但是接下来我执行:

express testapp
-bash: express: command not found

好像没有安装express。是什么问题呢?

顺便提一下,我用的是OSX系统,如果有什么区别的话。


你在安装时使用了-g吗? - duncan
尝试过使用-g选项和不使用它。尝试过使用sudo和不使用它。 - R0b0tn1k
没有sudo权限无法工作... - R0b0tn1k
2个回答

22

Express(4.0版)本身不具有bin文件夹。 您需要安装express-generator以获得设置功能。

Express 4.0进行了重大更改。 具体而言,将中间件和辅助函数移动到外部模块。

如果您需要立即启动并运行某些内容,则应安装Express 3,然后在有更多时间时学习如何运行Express 4。

首先,请确保您的$PATH中包含./node_modules/.bin。 然后...

npm install "express@3.x"
express

如果你有时间学习Express 4的差异,那么你可以通过安装express-generator来快速上手。

npm install express-generator
express

重要提示: 请确保在您的 shell $PATH 变量中添加 ./node_modules/.bin 目录。Node 模块中的可执行文件链接在 ./node_modules/.bin 目录中。将其添加到路径中会使运行这些可执行文件更加便捷,无需输入完整的路径且不需要全局添加它们。如果您需要处理多个项目并需要与旧项目保持向后兼容,则全局添加它们是一个不好的建议。

提示: 您可以在 Github 上找到 Express 中间件和辅助程序的列表


1
请确保你的 $PATH 中包含了 ./node_modules/.bin - Daniel
$ npm install -g "express@3.x"请安装 "express@3.x" 的全局模块。 - beauXjames
最好在本地安装软件。有一天你可能想要使用express 4进行工作,但你仍然希望你的旧的express 3项目能够继续正常工作。 - Daniel
用通俗易懂的语言来解释“确保在$PATH中有./node_modules/.bin”是什么意思? - JGallardo
我尝试按照这些指示操作,但./node_modules/.bin不在我的$PATH中...我该怎么办? - Steverino
显示剩余2条评论

6

以下是我如何让我的Express应用程序正常工作的过程。首先运行:

npm install -g express-generator

然后我使用以下内容创建了我的应用:

express app_name

其中app_name是您的应用程序的名称。

然后我安装了依赖项。

cd app_name && npm install

然后,我运行了这个应用程序:

DEBUG=app_name ./bin/www

提示是由系统生成的,您可以复制粘贴。然后您访问
http://localhost:3000/

这是我的应用程序在本地工作的截图:

enter image description here


按照相同的步骤进行操作,但是应用程序无法运行。它说在./bin/www内部的require('../app')失败了。我不明白为什么它不起作用。 - IcyFlame

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接