问题描述
react native 项目,做到一半昨天突然无法成功运行run-android了,提示包‘assert’缺失。
一通搜索、回退、重装等,仍然没有找到问题的原因。
网上搜索普遍说rm -rf node_modules && npm install
还有 watchman watch-del-all
。都尝试过了。
今天我就想,不是缺少assert嘛,我npm install assert
,打算缺多少我就人工安多少。
结果又挨个提示缺少 path、console、hmacsha1 这几个,悉数安装后,现在提示缺少 fs ,这次运行了npm install fs
,但还是报。
问题是这几个包应该是环境内置的吧?他们怎么会缺少呢?
如果真是我乱操作弄丢了,怎么重新安装回来呢?
我的package.json
其中assert、console、hmacsha1、path是我人工安装的。。
{
"name": "RNC",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"assert": "^2.0.0",
"console": "^0.7.2",
"hmacsha1": "^1.0.0",
"path": "^0.12.7",
"react": "16.8.3",
"react-native": "0.59.8",
"react-native-gesture-handler": "^1.3.0",
"react-navigation": "^3.11.1"
},
"devDependencies": {
"@babel/core": "^7.5.5",
"@babel/runtime": "^7.5.5",
"babel-jest": "^24.8.0",
"jest": "^24.8.0",
"metro-react-native-babel-preset": "^0.55.0",
"react-test-renderer": "16.8.3"
},
"jest": {
"preset": "react-native"
}
}
Metro bundler中报错信息如下
DELTA [android, dev] ./index.js ▓▓▓▓▓▓▓▓▓▓▓░░░░░ 70.4% (621/740)::ffff:127.0.0.1 - - [22/Jul/2019:15:05:17 +0000] "GET /index.delta?platform=android&dev=true&minify=false HTTP/1.1" 500 - "-" "okhttp/3.12.1"
error: bundling failed: Error: While trying to resolve module `fs` from file `/Users/shiwen/Documents/project/RNC/node_modules/graceful-fs/graceful-fs.js`, the package `/Users/shiwen/Documents/project/RNC/node_modules/fs/package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`/Users/shiwen/Documents/project/RNC/node_modules/fs/index.js`. Indeed, none of these files exist:
* `/Users/shiwen/Documents/project/RNC/node_modules/fs/index.js(.native||.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx)`
* `/Users/shiwen/Documents/project/RNC/node_modules/fs/index.js/index(.native||.android.js|.native.js|.js|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx)`
at ResolutionRequest.resolveDependency (/Users/shiwen/Documents/project/RNC/node_modules/metro/src/node-haste/DependencyGraph/ResolutionRequest.js:65:15)
at DependencyGraph.resolveDependency (/Users/shiwen/Documents/project/RNC/node_modules/metro/src/node-haste/DependencyGraph.js:283:16)
at Object.resolve (/Users/shiwen/Documents/project/RNC/node_modules/metro/src/lib/transformHelpers.js:261:42)
at dependencies.map.result (/Users/shiwen/Documents/project/RNC/node_modules/metro/src/DeltaBundler/traverseDependencies.js:399:31)
at Array.map (<anonymous>)
at resolveDependencies (/Users/shiwen/Documents/project/RNC/node_modules/metro/src/DeltaBundler/traverseDependencies.js:396:18)
at /Users/shiwen/Documents/project/RNC/node_modules/metro/src/DeltaBundler/traverseDependencies.js:269:33
at Generator.next (<anonymous>)
at asyncGeneratorStep (/Users/shiwen/Documents/project/RNC/node_modules/metro/src/DeltaBundler/traverseDependencies.js:87:24)
at _next (/Users/shiwen/Documents/project/RNC/node_modules/metro/src/DeltaBundler/traverseDependencies.js:107:9)
DELTA [android, dev] ./index.js ▓▓▓▓▓▓▓▓▓▓▓░░░░░ 70.4% (621/740), failed.
我后来找到问题了,原来是代码里多写了一个我没用的东西。


就是这一条,导入了一个不知道是什么的东西。它有问题!
我用的vscode,稍微输入几个字母他会智能提示的,这个时候我点一下回车它就真导入了。我居然没发现。
争取警惕一下吧,不要让他自己乱导入包。。由于没有频繁提交git,所以这个实在没发现,查了好几天原因。
至于这个@jest为啥不行,貌似跟typescript有关。