【问题标题】:Module not found: Error: Can't resolve 'react-native/Libraries/Image/resolveAssetSource'找不到模块:错误:无法解析“react-native/Libraries/Image/resolveAssetSource”
【发布时间】:2019-01-30 11:54:30
【问题描述】:

我正在我当前的 react-native 项目中添加一个音频模块。我试过安装几个模块(react-native-soundreact-native-track-player)。在两个模块中获取相同的错误输出,该输出始终指向 'react-native/Libraries/Image/resolveAssetsource' 作为未找到模块。

ERROR in ./node_modules/react-native-track-player/lib/index.js
Module not found: Error: Can't resolve 'react-native/Libraries/Image/resolveAssetsource' in 'D:\workspaces\web\react\blink\node_modules\react-native-track-player\lib'
 @ ./node_modules/react-native-track-player/lib/index.js 1:401-459
 @ ./node_modules/react-native-track-player/index.js
 @ ./components/ui/BlinkAudio/BlinkAudio.web.js
 @ ./components/ui/BlinkAudio/index.web.js
 @ ./components/dialogs/ResourceDetails/ResourceDetails.js
 @ ./components/dialogs/ResourceDetails/index.js
 @ ./components/panels/catalog/CatalogPanel.js
 @ ./components/parts/Main/Main.js
 @ ./components/parts/Main/index.js
 @ ./index.web.js

这是音频模块 react-native-track-player 的索引文件中的当前导入:

import { Platform, AppRegistry, DeviceEventEmitter, NativeEventEmitter, NativeModules } from 'react-native';
import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetsource';

我已尝试通过以下“react-native”的导入来解决此问题,包括“resolveAssetsource”:

import { 
    Platform, 
    AppRegistry, 
    DeviceEventEmitter, 
    NativeEventEmitter, 
    NativeModules, 
    resolveAssetsource 
} from 'react-native';

但我不太确定这是否是最好的方法,通常我不喜欢直接接触包节点模块。

我还尝试从 webpack 加载器中排除音频模块,但没有结果。

 module: {
    loaders: [
      {
        test: /\.js?$/,
        exclude: function (modulePath) {
          return (
            /node_modules/.test(modulePath) &&
            !/node_modules(\\|\/)react-native-track-player/.test(modulePath)
          );
        },

我想知道是否有人可以帮助我找到答案以及是否可以处理这个 react-native 问题,因为我认为这些音频模块错误地调用了 resolveAssetsource,或者另一方面,react-本机没有为第三方提供这个特定的库,我不知道。

【问题讨论】:

    标签: react-native npm webpack


    【解决方案1】:

    这似乎是一个语法错误问题。没有文件或模块名为resolveAssetsource,模块和文件名是resolveAssetSource大写@987654329 @。

    尝试用yarn remove react-native-track-player删除react-native-track-player并重新安装(或删除整个node_modules目录并再次运行yarn install)因为react-native-track-player/lib/index.js下的源代码有它正确无误:

    import { Platform, AppRegistry, DeviceEventEmitter, NativeEventEmitter, NativeModules } from 'react-native';
    import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource';
    

    如果你在其他地方使用它,你必须像这样导入它:

    import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetSource';
    

    但这不是首选方法,因为此方法是 RN Image 类/组件 Image.resolveAssetSource(source) 的成员,所以最好只导入 Image 组件并像这样使用它:

    import { 
        Platform, 
        AppRegistry, 
        DeviceEventEmitter, 
        NativeEventEmitter, 
        NativeModules, 
        Image  // Add Image import
    } from 'react-native';
    
    // and use the function as of Image method
    
    let audioAssetSource = Image.resolveAssetSource(audioSource);
    

    无论哪种方式,您都会使方法正常工作并解析资产来源信息。

    【讨论】:

      【解决方案2】:

      我也有同样的问题。我已确保 resolveAssetSource 文件存在于 /node_modules/react-native/Libraries/Image/resolveAssetSource.js。

      在过去的项目中,我只需将import resolveAssetSource from 'resolveAssetSource' 放在文件顶部即可,它可以正常工作,但现在对我不起作用。我也尝试使用整个路径导入文件,但同样的错误。

      【讨论】:

        猜你喜欢
        • 2016-10-27
        • 2020-07-20
        • 1970-01-01
        • 2019-11-15
        • 2023-03-22
        • 1970-01-01
        • 2022-06-29
        • 2020-05-01
        • 1970-01-01
        相关资源
        最近更新 更多