Node.js错误:找不到module express

Node.js错误:找不到module express,node.js,express,npm,Node.js,Express,Npm,我编写了第一个node.js应用程序,但找不到express library: C:\ChatServer\Server>node server.js module.js:340 throw err; ^ Error: Cannot find module 'express' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (modu

我编写了第一个node.js应用程序,但找不到express library:

C:\ChatServer\Server>node server.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\ChatServer\Server\server.js:6:9)
    at Object.<anonymous> (C:\ChatServer\Server\server.js:25:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
一些信息:

C:\ChatServer\Server>npm --version
1.2.24

C:\ChatServer\Server>node --version
v0.10.9

C:\ChatServer\Server>npm --version
1.2.24

C:\ChatServer\Server>npm ls -g installed express
npm WARN package.json cookie-signature@1.0.1 No repository field.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json methods@0.0.1 No repository field.
npm WARN package.json range-parser@0.0.4 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json bytes@0.2.0 No repository field.
npm WARN package.json pause@0.0.1 No repository field.
npm WARN package.json assert-plus@0.1.2 No repository field.
npm WARN package.json ctype@0.5.2 No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── express@3.2.6


C:\ChatServer\Server>npm ls installed express
C:\ChatServer\Server
└── (empty)

我怎样才能解决这个问题?(必须我安装它时没有
-g
?)

您需要将Express本地安装到应用程序的上下文中(
节点模块
文件夹):

原因是应用程序总是在其本地上下文中查找任何依赖项。全局安装仅用于设置系统范围内可用的二进制文件,如单元测试运行程序或引导程序等

使用Express,当您全局安装它时,您会得到一个
Express
二进制文件,可以为您引导应用程序。有关详细信息,请键入

$ express --help

因此,为了回答您的最后一个问题:是的,您需要在没有
-g

的情况下安装它。您已经很好地解释了解决方案,但我可能需要补充一点说明:
有时节点模块安装在

/usr/local/lib/node_modules
当您启动节点时,blabla.js模块将在中搜索

/lib
因此,解决方案是创建一个符号链接:

sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules

检查是否未安装
express
模块,请使用以下命令:

 npm install express
如果您的
node\u模块
目录位于另一个位置,请设置
node\u路径
Environment变量:

 set NODE_PATH=your\directory\to\node_modules;%NODE_PATH%

在硬盘中创建一个文件夹,例如sample1,然后转到命令提示符键入:cd并给出sample1文件夹的路径,然后安装所有模块

npm安装快车

npm安装jade

npm安装socket.io

然后将创建的应用程序保存在sample1文件夹中


试试看…

在您的情况下,您的
express
模块安装在
C:\Users\Dmitry\AppData\Roaming\npm\node\u modules\express
,但您需要将此模块放入项目目录中。因此,您应该将
express
模块文件夹中的文件从
C:\Users\Dmitry\AppData\Roaming\npm\node\u modules\
复制到项目目录中:
C:\ChatServer\Server\node\u modules
。如果项目文件夹中没有名为“node_modules”的文件夹,请先创建该文件夹并将这些文件粘贴到此文件夹中。此方法在我的windows pc上适用。请重新启动节点服务器,然后再次运行命令node
C:\ChatServer\server>node server.js
。现在应该可以用了

对我来说,在本地安装express时,使用--save选项可以工作,如下所示:

$ npm install express --save

在基于Ubuntu的操作系统上,你可以试试

sudo apt-get install node-express
它在Mint上对我有效

如果您已经在系统上安装了node,请使用以下Windows版本在本地为您的项目安装Express:

npm install express

npm install express --save
您可以通过以下方式为其提供全局访问权限:

npm install -g express --save

我遇到了同样的问题。我已在/usr/local/bin/全局安装了express。当我执行“npm安装”时,express不是在本地目录的节点_模块中创建的

  • 检查$HOME中是否有文件名.npmrc
  • 如果它具有“全局=真”,则更改为“全局=假”
  • 现在在应用程序目录中执行“npm安装”。更有可能的是,您应该将所有依赖于包的模块安装在应用程序目录中的节点_模块(本地)中
    • sudo-brew卸载节点
    • brew更新
    • brew升级
    • brew清理
    • brew安装节点
    • sudo chown-R$(whoami)/usr/本地
    • brew链接--覆盖节点
    • sudo brew后安装节点

    这对我在MacOS X Sierra上起到了作用

    转到您的应用程序目录,使用下面的命令安装express模块 npm安装快捷版--保存 然后使用下面的命令列出所有安装模块 npm ls
    您将看到所有本地安装的模块。

    我在vscode中遇到了这个错误,尽管模块安装在哪里。我正在使用打字脚本和express。在
    server.ts
    文件中,所有导入的文件都有红色的扭曲下划线。原来我有一个错误的
    tsconfig.json
    文件

    {
        "compileOnSave": false,
        "compilerOptions": {
            "module": "commonjs", // Previously this value was `es6`
            "target": "es6",
            "allowSyntheticDefaultImports": true,
            "baseUrl": "public",
            "sourceMap": true,
            "outDir": "dist",
            "jsx": "react",
            "strict": true,
            "preserveConstEnums": true,
            "removeComments": true,
            "noImplicitAny": true,
            "allowJs": true
        },
        "exclude": [
            "node_modules",
            "build"
        ]
    }
    

    我不以分享这一点为荣,但就我而言,我有:

     require('express.handlebars')
    
     //and the correct form is:
     require('express-handlebars'); //Use dash instead.
    

    全局安装express在本地项目上不起作用,因此您需要在本地安装它以供使用

    npm install express
    
    希望这能奏效


    谢谢

    我在这本书的例子“Kubernetes Up&Running”中遇到了同样的错误。
    我看到许多答案建议“手动”安装express,但我不认为这是最好的解决方案。
    因为我们使用的是package.json(我可以在日志中看到),而构建应用程序的正确方法是运行
    npm install
    ,所以我在package.json文件中添加了快速依赖项

     "dependencies": {
        "express": "^4.17.1"
    }
    

    我使用npm search express获得当前版本。首先检查express是否安装在正确的位置。 2.npm install express(运行此命令)。
    3.express将保存在您的“node_modules”文件夹下

    可能重复的可能重复的可能重复的可能重复的这对我也有帮助。我在全球安装了
    winston
    ,在以普通用户身份启动我的应用程序时,出于某种原因,它起作用了,但在启动我的应用程序和系统初始化脚本时,它就不起作用了。我通过在应用程序目录中本地安装winston(并将其添加到package.json)修复了它。您可以通过cd将全局安装的依赖项链接到项目根目录,然后在创建应用程序后使用“npm link”npm install。它将安装所有依赖项。谢谢这真的很有帮助。转到node_modules文件夹,然后安装express解决了我的问题problem@GoloRoden根据你的回答,我尝试了你的解决方案,但它抛出了一个错误:“npm ERR!tar.unpack untar错误C:\Users\VV\AppData\Roaming\npm cache\express\4.14.0\package.tgz npm ERR!Windows\u NT 6.3.9600 npm错误!argv“C:\\Program Files\\nodejs\\\node.exe”C:\\Program Files\\nodejs\\node\u modules\\npm\\bin\\npm cli.js“install”“express”easer way->npm link在windows 10上也能工作!在Windows 10中,在npm安装express之后,它无法自动添加到
    npm install express
    
     "dependencies": {
        "express": "^4.17.1"
    }