Nodejs не может найти модуль
-
21-12-2019 - |
Вопрос
Я получаю ошибку при попытке использовать любой глобальный модуль, экзэмп:
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:362:17)
at require (module.js:378:17)
at Object.<anonymous> (C:\BitNami\wappstack\...\test\app.js)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
.
Я установил команду экспресс:
npm install -g express
.
Мое приложение.js:
var express = require('express');
.
и запустить его с помощью командной строки Windows PowerShell или Node.js Windows:
node app.js
.
Не совсем знают, что идет не так, я что-то прочитал о переменных средах в Windows, может ли это быть?
разрешено / Обновление
Проблема была: переменные среды Windows не были настроены на папку NPM. Ищите папку NPM и добавьте путь в переменные среды.
Решение
Вы должны установить Express локально:
npm install express
.
Тогда требую, как вы сделали:
var express = require('express')
. Другие советы
Просто чтобы цитировать отсюда:
https://www.npmjs.org/doc/files/npm-folders.html
- .
- Установите его локально , если вам потребуется () это.
- Установите его глобально , если вы собираетесь запустить его в командной строке.
- Если вам нужна оба, то установите его в обоих местах, либо используйте NPM ссылку .
Я получал одинаковую ошибку в Windows 7 / X64, и добавление следующего в переменной среды разрешена проблема:
NODE_PATH=C:\Users\[USERNAME]\AppData\Roaming\npm\node_modules
.
* Замените [Имя пользователя] с вашим именем пользователя фактической системы
Я работаю в Linux, но когда мне нужен экспресс, я делаю это с относительным путем к тому, где он установлен, и он работает нормально:
var express = require('./public/node_modules/express');
.
Я уверен, что то же самое будет работать с пути Windows.Если вы хотите быть более явным и объявить абсолютный путь, это будет ядерный вариант, чтобы убедиться, что вы всегда знаете точно, где ваш модуль загружен независимо от того, откуда запускаются ваши сценарии.
Если у вас все еще есть проблема после использования явного пути, я не знаю, что может быть проблема.ОтказОтказ
Другой вариант будет запущен NPM Установить --save Express