如何在react-native项目中启用jsconfig.json

时间:2019-07-15 11:59:36

标签: javascript react-native

我正在建立一个新的react-native项目,并希望通过将jsconfig.json文件添加到我项目的根目录来配置应用程序以支持使用绝对路径导入模块。但是该应用程序无法解析模块。 我是否需要进行一些其他设置?

我用以下结构创建了一个带有react-native-cli 2.0.1的新React-Native项目,并尝试像这样从App.js中导入MyButton:`import from'〜/ components / MyButton'; ``

|-- android
|-- ios
|-- node_modules
|-- src
    |-- components
        |-- MyButton.js
    |-- App.js
|-- .eslintrc.js
|-- .flowconfig
|-- .watchmanconfig
|-- app.json
|-- babel.config.json
|-- index.js
|-- jsconfig.json
|-- metro.config.js
|-- package.json

jsconfig.json:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "~/*": ["src/*"]
    }
  }
}

package.json

{
  "name": "TestApp",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "react": "16.8.6",
    "react-native": "0.60.3"
  },
  "devDependencies": {
    "@babel/core": "^7.5.4",
    "@babel/runtime": "^7.5.4",
    "@react-native-community/eslint-config": "^0.0.5",
    "babel-jest": "^24.8.0",
    "eslint": "^6.0.1",
    "jest": "^24.8.0",
    "metro-react-native-babel-preset": "^0.55.0",
    "react-test-renderer": "16.8.6"
  },
  "jest": {
    "preset": "react-native"
  }
}

我希望该应用程序能够解析该模块,但出现错误:

`Error: Unable to resolve module `~/components/MyButton` from `/TestApp/src/App.js`: Module `~/components/MyButton` does not exist in the Haste module map

2 个答案:

答案 0 :(得分:0)

您应该使用babel-plugin-module-resolver

babel.config.js的示例配置:

module.exports = {
  ...other config

  plugins: [
    ['module-resolver', {
      root: [
        './src',
      ],
      "alias": {
        "~": "./src",
      }
    }],
  ],
};

默认情况下,React Native不支持从jsconfig.json解析模块。

答案 1 :(得分:0)

替代方法:

  1. 在src文件夹中创建一个名为package.json的文件。
  2. 使用以下代码填充

    {   “名称”:“ src” }

  3. 上述步骤使您可以使用绝对地址。

例如从'components / MyButton.js'导入MyButton;