Mah*_*i N 6 ecmascript-6 reactjs babeljs react-native babel-plugin
我正在尝试在反应本机应用程序中使用babel-plugin-module-resolver 。当我使用这样的插件配置时,babel.config.js它工作得很好。
plugins: [
[
'module-resolver',
{
extensions: ['.ios.js', '.android.js', '.js', '.json'],
alias: {
utils: './src/utils',
},
},
],
],
Run Code Online (Sandbox Code Playgroud)
但问题是我必须在每个别名路径中写入 ./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'
},
},
],
],
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用,我收到此错误:
error: Error: Unable to resolve module '../../../utils/Themes' from 'src/components/shared/Container.js':
Run Code Online (Sandbox Code Playgroud)
那么正确的使用root选项的方法是什么呢?
小智 4
好吧,我找到了一个解决方案,虽然不能真正解决问题,但可以使其发挥作用。
我正在使用 typescript 和 babel 来编译它。
我的文件结构是这样的:
|-dist
|-src
|-db
|-connect
|-index.ts
|-index.ts
|-.babelrc
|-etc...
Run Code Online (Sandbox Code Playgroud)
db/connect当 babel 编译我的代码时, in的导入src/index.ts是这样的:
import ... from "db/connect"
Run Code Online (Sandbox Code Playgroud)
对此:
var _connect = require("../db/connect");
Run Code Online (Sandbox Code Playgroud)
并且应该是这样的:
var _connect = require("./db/connect");
Run Code Online (Sandbox Code Playgroud)
你可以看到,babel 支持一个文件夹,无论我怎么尝试,它仍然缺少 require 路径。
因此,为了解决这个问题,我只需将/dist路径添加到.babelrc
前:
|-dist
|-src
|-db
|-connect
|-index.ts
|-index.ts
|-.babelrc
|-etc...
Run Code Online (Sandbox Code Playgroud)
后:
[
"module-resolver",
{
"alias": {
"db": "./dist/db",
}
}
}
]
Run Code Online (Sandbox Code Playgroud)
正如你所说,它root不会影响 require 路径,所以我只是将其删除。
这并不能解决问题,但可以使其发挥作用。
希望它有帮助,祝你好运!:)
| 归档时间: |
|
| 查看次数: |
6476 次 |
| 最近记录: |