nodejs не может видеть установленный модуль mysql - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь установить модуль mysql для nodejs, используя npm.Я использую подсистему Windows для Linux, чтобы сделать это.Я успешно установил с помощью:

sudo npm install -g mysql

Моя консоль возвращает:

+ mysql@2.16.0
added 11 packages from 15 contributors in 5.779s

Однако при импорте модуля с помощью:

const mysql = require("mysql"); 

я получаю сообщение об ошибке:

module.js:550
    throw err;
    ^

Error: Cannot find module 'mysql'
    at Function.Module._resolveFilename (module.js:548:15)
    at Function.Module._load (module.js:475:25)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/mnt/c/Users/alesi/Documents/coding/Web/Portfolio/src/servers/server.js:7:15)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)

Другие модули, такие как querystring и nodemailer, работают отлично.Есть идеи?

1 Ответ

0 голосов
/ 27 февраля 2019

Когда вы устанавливаете пакет глобально, пакет обычно устанавливается в %USERPROFILE%\AppData\Roaming\npm\node_module в Windows или /usr/local/lib/node_modules в системах Unix.См. этот пост.

Теперь в вашем проекте, когда вы что-то require(), он ищет в папке node_modules текущего каталога.Поскольку вы установили пакет глобально, он не существует в проекте.

При запуске этого пакета пакет будет загружен в папку node_modules проекта вместо global node_modules.--save также запишет его как зависимость от package.json

npm install --save mysql

По моему опыту, глобальные пакеты, похоже, используются для CLI или запуска сценариев из командной строки, а недля использования в коде.

...