![](/img/trans.png)
[英]How to use babel-plugin-module-resolver to set an alias for the root path and disable other root imports?
[英]How to use root option in babel-plugin-module-resolver?
我正在尝试在 react-native 应用程序中使用babel-plugin-module-resolver 。 当我在babel.config.js
使用这样的插件配置时,它工作得很好。
plugins: [
[
'module-resolver',
{
extensions: ['.ios.js', '.android.js', '.js', '.json'],
alias: {
utils: './src/utils',
},
},
],
],
但问题是我必须在每个别名路径中写入 ./src 。 所以我尝试使用root
选项。 这是我试过的代码
plugins: [
[
'module-resolver',
{
root: './src', // I also tried ['./src']
extensions: ['.ios.js', '.android.js', '.js', '.json'],
alias: {
utils: 'utils', // already tried '/utils' and './utils'
},
},
],
],
但这对我不起作用,我收到此错误:
error: Error: Unable to resolve module '../../../utils/Themes' from 'src/components/shared/Container.js':
那么使用root
选项的正确方法是什么?
好吧,我找到了一个解决方案,它不能真正解决问题,但可以使它起作用。
我正在使用打字稿和 babel 来编译它。
我的文件结构是这样的:
|-dist
|-src
|-db
|-connect
|-index.ts
|-index.ts
|-.babelrc
|-etc...
当 babel 编译我的代码时, src/index.ts
中db/connect
的导入,从这个开始:
import ... from "db/connect"
对此:
var _connect = require("../db/connect");
应该是这样的:
var _connect = require("./db/connect");
你怎么看,babel 支持一个文件夹,无论我尝试什么,这仍然缺少 require 路径。
所以,为了解决这个问题,我只需将/dist
添加到.babelrc
的路径
前:
[
"module-resolver",
{
"root": ["./"], # or ["src"] or "src" or ["./src"] or "./src" or any way you can imagine
"alias": {
"db": "./db",
}
}
}
]
后:
[
"module-resolver",
{
"alias": {
"db": "./dist/db",
}
}
}
]
正如您所说, root
不会影响需要路径,所以我只是将其删除。
这不能解决问题,但可以使它起作用。
希望能帮到你,祝你好运! :)
检查文件 bable.config.js 并删除插件模块解析器,root 对我有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.