Переписать, не импортируя локальные каталоги - PullRequest
0 голосов
/ 24 февраля 2020

Я использую Rewire в Node.JS 12, и он отлично работает при перемонтировании глобальных модулей, т.е. this.mysql = rewire('mysql') работает нормально. Однако, когда я делаю this.mod1 = rewire('./mod1'), он выдает ошибку с Cannot find module './mod1'.

Что может пойти не так? Обратите внимание, что мои файлы находятся в каталоге src/, поэтому node_modules/.. не является каталогом моего файла. Я пробовал rewire('./src/mod1'), и это тоже не работает.

1 Ответ

1 голос
/ 24 февраля 2020

rewire работает так же, как и require, поэтому я предполагаю, что вы вызываете функцию (rewire) из другой директории вашего модуля mod1.

Предполагая, что у вас есть следующая файловая структура:

.
├── index.js
├── mod0.js
└── src
|   ├── mod1.js
|   └── dir
|       ├── mod2.js
|       └── anotherDir
|           └── mod3.js

Когда требуется mod1 в mod2 , путь должен быть относительно mod2 :

// src/dir/mod2.js
const mod1 = rewire('../mod1') // NOT rewire('./mod1')
const mod0 = rewire('../../mod0')
const mod3 = rewire('./anotherDir/mod3')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...