Я написал свое первое приложение 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)
Но экспресс установлен (с -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 range-parser@0.0.4 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 methods@0.0.1 No repository field.
npm WARN package.json methods@0.0.1 No readme data.
npm WARN package.json fresh@0.1.0 No repository field.
npm WARN package.json send@0.1.0 No repository field.
npm WARN package.json cookie-signature@1.0.1 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 bytes@0.2.0 No repository field.
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm WARN package.json pause@0.0.1 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 policyfile@0.0.4 'repositories' (plural) Not supported.
npm WARN package.json Please pick one as the '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.
express@3.2.6 C:\Users\Dmitry\AppData\Roaming\npm\node_modules\express
├── methods@0.0.1
├── fresh@0.1.0
├── range-parser@0.0.4
├── cookie-signature@1.0.1
├── buffer-crc32@0.2.1
├── cookie@0.1.0
├── debug@0.7.2
├── commander@0.6.1
├── mkdirp@0.3.4
├── send@0.1.0 (mime@1.2.6)
└── connect@2.7.11 (pause@0.0.1, qs@0.6.5, bytes@0.2.0, cookie@0.0.5, formidable@1.0.14, send@0.1.1)
Некоторая информация:
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 локально в контексте вашего приложения (
node_modules
папки):Причина этого в том, что приложения всегда ищут в своем локальном контексте любые зависимости. Глобальная установка предназначена только для настройки общесистемных двоичных файлов, таких как средства запуска модульных тестов, загрузчики и тому подобное.
С Express, когда вы устанавливаете его глобально, вы получаете
express
двоичный файл, который может загружать приложение за вас. Для получения дополнительной информации введитеИтак, чтобы ответить на ваш последний вопрос: ДА , вам нужно установить его без
-g
.источник
winston
установил глобально, что по какой-то причине работало при запуске моего приложения от имени обычного пользователя, но при запуске моего приложения и сценария инициализации системы это не сработало. Я исправил это, установив Winston локально в каталог приложения (и добавив его в package.json).Для меня это сработало при локальной установке Express с параметром --save следующим образом:
источник
Убедитесь, что вы не устанавливаете
express
модуль, используйте эту команду:и если ваш
node_modules
каталог находится в другом месте, установитеNODE_PATH
переменную envirnment:источник
Голо хорошо объяснил решение, но я мог бы добавить уточнение:
иногда модули узлов устанавливаются в
и когда вы запускаете узел, модули blabla.js ищутся в
Итак, решение - создать символическую ссылку:
sudo ln -s /usr/local/lib/node_modules/ /lib/node_modules
источник
В вашем случае ваш
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. Перезагрузите сервер узла и еще раз запустите команду узлаC:\ChatServer\Server>node server.js
. Теперь должно работать !!!!источник
В ОС на базе Ubuntu вы можете попробовать
он работает для меня на монетном дворе
источник
Если вы установили узел в своей системе, установите Express локально для своего проекта, используя следующее для Windows:
или
Вы можете предоставить ему глобальный доступ, используя:
источник
У меня была эта ошибка в vscode, хотя модули были установлены. Я использую машинопись и экспресс. В
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" ] }
источник
создайте одну папку на жестком диске, например, sample1, и перейдите к командной строке, введите: cd и укажите путь к папке sample1, а затем установите все модули ...
а затем все, что вы создаете, сохраните в папке sample1
попытайся...
источник
перейдите в каталог своего приложения и установите экспресс-модуль с помощью приведенной ниже команды npm install express --save, затем перечислите все установочные модули с помощью приведенной ниже команды npm ls, вы увидите все локально установленные модули.
источник
глобальная установка Express не будет работать в вашем локальном проекте, поэтому вам необходимо установить его локально для использования.
Надеюсь, это сработает
Спасибо
источник
Я столкнулся с той же проблемой. Я установил экспресс-версию глобально в / usr / local / bin /. Когда я выполняю «npm install», экспресс не был создан в node_modules локального каталога.
источник
Это сработало для меня на MacOS X Sierra
источник
Я не горжусь тем, что делюсь этим, но в моем случае у меня было:
require('express.handlebars') //and the correct form is: require('express-handlebars'); //Use dash instead.
источник
У меня была такая же ошибка после примера из этой книги: «Kubernetes Up & Running».
Я вижу много ответов, предлагающих установить экспресс «вручную», но я не уверен, что это лучшее решение.
Поскольку мы используем package.json (я вижу это в журналах) и работает правильный способ создания приложения
npm install
, я добавил явную зависимость в файл package.json ."dependencies": { "express": "^4.17.1" }
Я получаю текущую версию с расширением
npm search express
.источник