首页 > 解决方案 > 重新布线不导入本地目录

问题描述

我在 Node.JS 12 中使用 Rewire,它在重新连接全局模块时工作正常,即this.mysql = rewire('mysql')工作正常。但是,当我这样做时this.mod1 = rewire('./mod1'),会出现错误Cannot find module './mod1'

可能出了什么问题?请注意,我的文件在一个src/目录中,所以node_modules/..不是我的文件目录。我已经尝试过rewire('./src/mod1'),它也不起作用。

标签: javascriptunit-testing

解决方案


rewire工作方式与此相同,require因此我将假设您正在从不同的目录调用该函数(重新连接)到您的 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')

推荐阅读