我正在添加一个音频模块在我目前的反应-本机项目。我尝试过安装几个模块(反应-自然声,反应-本地-轨道-播放器)。在两个模块中获得相同的错误输出,这总是指向'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这是当前在音频模块的索引文件中导入的--本机声道播放器:
import { Platform, AppRegistry, DeviceEventEmitter, NativeEventEmitter, NativeModules } from 'react-native';
import resolveAssetSource from 'react-native/Libraries/Image/resolveAssetsource';我试图修复这一问题,包括从“react原生”导入的“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)
);
},我想知道是否有人能帮我找到一个答案,如果有可能解决这个反应-本机问题,因为我认为这些音频模块错误地调用了resolveAssetsource,或者在另一方面,react本机不为第三方提供这个特定的库,我不知道。
发布于 2020-04-10 07:05:20
这似乎是一个语法错误问题。没有名为resolveAssetsource,的文件或模块,该模块和文件名为resolveAssetSource,其大写为S。
尝试使用react-native-track-player删除yarn remove 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);无论哪种方式,您都可以让该方法工作并解析资产源信息。
https://stackoverflow.com/questions/54440051
复制相似问题