React native 在世博会中,要求模块;取回;,引发异常:ReferenceError:Can';找不到变量:self
我已经搜索了各种可能的答案,但没有找到任何合适的方法来解决这个特定的错误 我在问题标题中提到了确切的错误字符串。在我的React native 在世博会中,要求模块;取回;,引发异常:ReferenceError:Can';找不到变量:self,react-native,fetch,expo,npm-scripts,React Native,Fetch,Expo,Npm Scripts,我已经搜索了各种可能的答案,但没有找到任何合适的方法来解决这个特定的错误 我在问题标题中提到了确切的错误字符串。在我的ReactNative应用程序中安装fetchnpm模块时,开始出现此错误。在开发过程中,此错误仅出现在我的手机上启动/加载应用程序时。在安装fetch之前,我的应用程序已在手机上正确加载。在windows CLI中,没有此类错误可以帮助我解决问题,它只是表明构建成功 我正在使用Expo进行我的ReactNative应用程序开发。请在这方面协助解决该问题。更多详细信息可在以下附加
ReactNative
应用程序中安装fetch
npm模块时,开始出现此错误。在开发过程中,此错误仅出现在我的手机上启动/加载应用程序时。在安装fetch
之前,我的应用程序已在手机上正确加载。在windows CLI中,没有此类错误可以帮助我解决问题,它只是表明构建成功
我正在使用Expo
进行我的ReactNative
应用程序开发。请在这方面协助解决该问题。更多详细信息可在以下附加屏幕(显示堆栈跟踪)中看到:
Package.json
{
"name": "my-new-project",
"main": "node_modules/expo/AppEntry.js",
"private": true,
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"eject": "expo eject",
"test": "node ./node_modules/jest/bin/jest.js --watchAll"
},
"jest": {
"preset": "jest-expo"
},
"dependencies": {
"@expo/samples": "2.1.1",
"expo": "29.0.0",
"fetch": "^1.1.0",
"react": "16.3.1",
"react-native": "https://github.com/expo/react-native/archive/sdk-29.0.0.tar.gz",
"react-navigation": "^2.9.3"
},
"devDependencies": {
"jest-expo": "29.0.0"
}
}
这是一个非常奇怪的问题,当我卸载
获取
并尝试使用任何其他库(例如axios
)时,仍然会出现对相同错误(与获取模块相关)的引用。我已经重新启动了笔记本电脑,也重新启动了手机上的Expo应用程序。我认为fetch 1.1.0不能在React-Native上正常工作,因为React-Native使用的是JS核心而不是NodeJS。
我希望您使用库axios
或React Native()的内置“fetch”
npm安装axios——保存
范例
// Want to use async/await? Add the `async` keyword to your outer function/method.
async function getUser() {
try {
const response = await axios.get('/user?ID=12345');
console.log(response);
} catch (error) {
console.error(error);
}
}
或
我已经弄明白了,基本上这不是npm
npm
问题,也不是npmfetch
组件问题。基本上,在设置项目之后,我运行了npm install expo cli
,当我尝试运行expo start
或npm start
时,cli中出现了哪条消息。此时有新版本可用,v30.x.x
,是的,self
参考版本在较旧的expo
版本中,但不在v30.x.x
中
安装expo cli
后,它与我现有的project expo配置和安装的文件不匹配,因此我重新设置了项目,加载并安装了最新版本库,并将项目文件保存到其中
轰!这次应用程序运行时没有出现任何错误。在我这方面,每次关闭并重新启动电脑时都会触发错误(我在Ubuntu 16.04上开发) 我使用了一个旧答案(2016年),完全解决了这个问题: 我补充说:
global.self = global;
进入主js
文件
一切都恢复正常了
expo cli
位于2.2.4
(最新版本)该问题似乎是由新版本的whatwg fetch
产生的。对我有效的解决方案是明确添加旧版本:
npm i whatwg-fetch@2.0.4
或
纱线添加量-fetch@2.0.4
从获取的解决方案这很奇怪,我卸载了
fetch
,并重新安装了expo cli
(全局),但仍然存在对自我错误的引用。看来我必须从头开始重新创建整个项目。我还运行了npm cache clean--force
,但没有成功。有什么建议吗?我认为您仍然需要删除节点_模块,然后使用rm-rf节点_模块
和npm安装
重新安装。需要重新启动dev服务器。我更喜欢使用命令npm start--reset cache
或warn start--reset cache
启动dev服务器,因为我已经删除了节点模块/目录。重新启动计算机,然后运行npm安装
,但未成功。与我最初发布的相同的问题。尽管您提到了npm启动,但在我的机器上,这几天的工作不正常,为此,我在这里发布了一个单独的问题:我升级到expo-cli@2.2.0产生了这个错误。降级为世博会-cli@2.1.3重新运行。此问题在expov32.0.0
中持续存在。降级并不是真正的解决方案。您没有在帮助您解决问题的详细答案中添加引用。另外,如果您通过新的main.js
文件语法来显示您添加此内容的确切位置,则会更好。导入后,我将该行添加到我的App.js
,一切都是金色的
global.self = global;