首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react本机无法添加自定义资产,已忽略metro.config.js

react本机无法添加自定义资产,已忽略metro.config.js
EN

Stack Overflow用户
提问于 2019-11-19 19:44:03
回答 2查看 4K关注 0票数 2

我正在尝试使用具有以下配置的react原生应用程序中的自定义资源:

代码语言:javascript
复制
"dependencies": {
    "glob": "^7.1.4",
    "metro-config": "latest",
    "react": "16.8.6",
    "react-native": "0.60.5",
    "react-native-camera": "git+https://git@github.com/react-native-community/react-native-camera",
    "react-native-easy-toast": "^1.2.0",
    "react-native-fs": "^2.14.1",
    "react-native-svg": "^9.8.4",
    "react-native-tensorflow": "^0.1.8",
    "res": "^0.4.0",
    "rn-fetch-blob": "github:joltup/rn-fetch-blob#master",
    "tflite-react-native": "0.0.5",
    "util": "^0.12.1"
  },

我声明鼠标只在metro.config.js和react-native.config.js中故意使用我的自定义扩展,如下所示:

代码语言:javascript
复制
module.exports = {
  project: {
    ios: {},
    android: {},
  },
  assets: [
    './src/assets/icons',
    './src/assets/svg',
    './src/assets/ai',
  ],
  assetExts: [
    ".xml", ".png", ".jpg", ".pb", ".tflite"
  ]
};

但信息仍然是一样的:

代码语言:javascript
复制
error: bundling failed: Error: Unable to resolve module `./ai/annotations/Part1.xml` from 
`...src/assets/default-assets.js`: The module `./ai/annotations/Part1.xml` could not be found from 
`.../src/assets/default-assets.js`. Indeed, none of these files exist:
  * `.../src/assets/ai/annotations/Part1.xml(.native||.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx)`

因此metro.config.js和react-native.config.js显然被忽略了

更新:当尝试在具有最新依赖项的全新react原生应用程序中进行尝试时,会出现一条验证消息:

代码语言:javascript
复制
● Validation Warning:

  Unknown option "assets" with value ["./src/assets/ai"] was found.
  This is probably a typing mistake. Fixing it will remove this message.

● Validation Warning:

  Unknown option "assetExts" with value [".xml", ".png", ".jpg", ".pb", ".tflite"] was found.
  This is probably a typing mistake. Fixing it will remove this message.

UPDATE2:我在一个单独的分支上创建了一个展示问题的repo,以及一个不起作用的解决方案建议(使用app.json而不是metro.config.js或react-native.config.js)。你可以在这里找到它:

https://github.com/Macilias/ReactNativeAssetFail

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-21 18:53:23

更新,我设法通过从app.json指向metro.config.js来消除错误,如下所示:

代码语言:javascript
复制
{
  "name": "reactNativeTestapp",
  "displayName": "reactNativeTestapp",
  "packagerOpts": {
    "config": "metro.config.js"
  }
}

metro.config.js的内容如下所示:

代码语言:javascript
复制
const {getDefaultConfig} = require('metro-config');

module.exports = (async () => {
  const {
    resolver: {sourceExts, assetExts},
  } = await getDefaultConfig();
  return {
    resolver: {
      assetExts: [assetExts, 'txt', 'xml', 'png', 'jpg', 'pb', 'tflite'],
      sourceExts: [...sourceExts, 'txt', 'xml', 'png', 'jpg', 'pb', 'tflite'],
    },
  };
})();

然而,xml文件的内容并没有以App.js的形式显示出来,它只打印一个可能与行数相对应的数字?!但是,我如何才能真正访问文件的内容呢?

票数 1
EN

Stack Overflow用户

发布于 2019-11-19 19:55:36

尝试将它们添加到具有相同结构的react-native.config.js文件中。我的是这样的:

代码语言:javascript
复制
module.exports = {
    assets: ["./app/assets/fonts"]
}

别忘了清理和跑路。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58933354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档