如何解决“你可能需要一个额外的加载器来处理这些加载器的结果”React Native
我正在开发带有 TypeScript 模板的 Bare React Native 音频播放器混合(Web 和 android)应用程序。 在我实现了 expo-av 并尝试在网络上编译它之后,我得到了这个:
Failed to compile.
./node_modules/expo-av/build/Audio/Recording.js 134:46
Module parse Failed: Unexpected token (134:46)
File was processed with these loaders:
* ./node_modules/react-scripts/node_modules/babel-loader/lib/index.js
You may need an additional loader to handle the result of these loaders.
| this._canRecord = false;
| this._isDoneRecording = true;
> this._finalDurationMillis = finalStatus?.durationMillis ?? 0;
| _recorderExists = false;
|
webpack.config.js:
const createExpoWebpackConfigAsync = require('@expo/webpack-config');
module.exports = async function(env,argv) {
const config = await createExpoWebpackConfigAsync({
...env,babel: {
dangerouslyAddModulePathsToTranspile: ['@ui-kitten/components']
}
},argv);
return config;
};
package.json:
"dependencies": {
"react": "^16.13.1","react-native": "0.63.4",...
}
"devDependencies": {
"@expo/webpack-config": "^0.12.58","@babel/core": "^7.8.4",...
}
如果有帮助,这是我的存储库: https://github.com/VelislavP/MeditationAppReactNative
使用 expo-av 的文件是:MeditationAppReactNative/src/screens/meditations.tsx
我该如何解决这个问题? 提前致谢。
解决方法
好的,我解决了这个问题。现在它编译了!
实际问题是:
./node_modules/expo-av/build/Audio/Recording.js 134:46
Module parse failed: Unexpected token (134:46)
所以我去了 Recording.js 并进行了更改:
this._finalDurationMillis = finalStatus?.durationMillis ?? 0;
为此:
this._finalDurationMillis = finalStatus.durationMillis;
其他所有出现此类错误的文件都是问号的错误。
我认为这与我的项目使用 Typescript 模板和 expo-av 使用 typescript 配置下载自身有关,但出于某种原因,它位于 .js 文件中,而 js 不喜欢“?。 “(如果您不确定某些东西是否存在,则在打字稿中使用)因此现在通过删除它应用程序可以运行。
,编辑 node_modules 不是一个好的解决方案。 这个问题是因为空合并运算符。 我从来没有在 React Native 项目中做过这样的事情,但我会在这里留下一个在 React 项目中帮助过我的解决方案。 我希望这能帮助遇到类似问题的其他人。
就我而言,加载新包 @babel/plugin-proposal-logical-assignment-operators
很有帮助。
我使用的是 @craco/craco
,所以加载这个包非常简单。
在我的 craco.config.js 文件中,我添加了这些行。
babel: {
plugins: [
"@babel/plugin-proposal-logical-assignment-operators"
],},
您可以通过此链接查看有关此问题的讨论详情。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。