Подтвердить что ты не робот

Node.js Ошибка: не удается найти модуль express

Я написал свое первое приложение node.js, но он не может найти экспресс-библиотеку:

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)

Но выражение intalled (с ключом -g):

C:\ChatServer\Server>npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No readme data.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json [email protected] No repository field.
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mime
C:\Users\Dmitry\AppData\Roaming\npm\express -> C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express\bin\express
npm WARN package.json [email protected] 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
[email protected] C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected])

Некоторая информация:

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 [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the 'repository' field
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
C:\Users\Dmitry\AppData\Roaming\npm
└── [email protected]


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

Как я могу решить эту проблему? ( ДОЛЖЕН Я устанавливаю его без -g?)

4b9b3361

Ответ 1

Вам нужно установить Express локально в контексте вашего приложения (папка node_modules):

$ npm install express

Причиной этого является то, что приложения всегда смотрят в своем локальном контексте для любых зависимостей. Глобальная установка предназначена только для создания доступных для всей системы двоичных файлов, таких как unit test runners или bootstrappers или что-то в этом роде.

С помощью Express, когда вы устанавливаете его по всему миру, вы получаете двоичный файл express, который может загружать приложение для вас. Для получения дополнительной информации введите

$ express --help

Итак, чтобы ответить на ваш последний вопрос: ДА, вам нужно установить его без -g.

Ответ 2

Для меня это сработало, когда локально установлен локально с параметром -save следующим образом:

$ npm install express --save

Ответ 3

Проверьте, не установлен ли модуль express, используйте следующую команду:

 npm install express

и если ваш каталог node_modules находится в другом месте, установите переменную NODE_PATH envirnment:

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

Ответ 4

Голо хорошо объяснил решение, но я мог бы добавить разъяснение:
иногда node модули устанавливаются в

/usr/local/lib/node_modules

и при запуске node модулей blabla.js выполняется поиск в

/lib

Итак, решение состоит в создании символической ссылки:

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

Ответ 5

В вашем случае ваш модуль express установлен в C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express, но вам нужно подключить этот модуль к вашему каталогу проектов. Поэтому вы должны скопировать файл в папку express с C:\Users\Dmitry\AppData\Roaming\npm\node_modules\ в каталог проекта следующим образом: C:\ChatServer\Server\node_modules. Если в папке проекта нет папки с именем "node_modules", сначала создайте ее и вставьте эти файлы в эту папку. Этот метод работал на моем компьютере с Windows. Перезагрузите сервер node и еще раз выполните команду node C:\ChatServer\Server>node server.js. Он должен работать сейчас!!!!

Ответ 6

На Ubuntu основе ОС вы можете попробовать

sudo apt-get install node-express

его работа для меня на Монетном дворе

Ответ 7

Учитывая, что вы установили node в свою систему, установите Express локально для своего проекта, используя для Windows следующее:

npm install express

или

npm install express --save

Вы можете предоставить глобальный доступ, используя:

npm install -g express --save

Ответ 8

У меня была эта ошибка в vscode, хотя модули, где они были установлены. Я использую typescript и выражаю. В файлах 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"
    ]
}

Ответ 9

создайте одну папку в вашем жестком диске, например sample1, и перейдите в командной строке: cd и укажите путь к папке sample1, а затем установите все модули...

npm install express

npm установить нефрит

npm install socket.io

а затем независимо от того, что вы создаете для сохранения приложения в папке sample1

попробуйте...

Ответ 10

перейдите в каталог приложений и установите экспресс-модуль, используя следующую команду: npm install express --save затем перечислите все установочные модули, используя следующую команду: npm ls вы увидите все локально установленные модули.

Ответ 11

npm install; 

Это работало для меня в Linux.

Ответ 12

Я столкнулся с той же проблемой. Я был установлен в глобальном масштабе в /usr/local/bin/. Когда я делаю "npm install", экспресс не был создан в node_modules локального каталога.

  • Проверьте, есть ли у вас имя файла .npmrc в $HOME
  • Если у него есть "global = true", измените на "global = false"
  • Теперь сделайте "npm install" в каталоге приложения. Скорее всего, вы должны получить все модули, зависящие от пакета, установленные в node_modules (локальном) в каталоге приложения.

Ответ 13

  • sudo brew удалить node
  • brew update
  • brew upgrade
  • brew очистка
  • brew установить node
  • sudo chown -R $(whoami)/usr/local
  • brew link --overwrite node
  • sudo brew postinstall node

Это сработало для меня на MacOS X Sierra

Ответ 14

Если у вас уже установлены модули Nodejs для другого конкретного проекта, вы можете перейти в корневой каталог вашего проекта и найти каталог с именем 'node_modules'. скопируйте эту папку в корневой каталог нового проекта и снова запустите приложение. Теперь это работает.

Примечание: я не уверен, сможем ли мы загрузить экспресс-модуль из каталога непосредственно в мой файл app.js вместо того, чтобы копировать каталог 'node_modules' в сам новый каталог.