node.js - 每次安装软件包时都必须重新安装 node_modules
问题描述
我有两个关于 react.js 的问题:
- 我
npx create-react-app xxx
用来初始化我的项目,每次我在做的时候遇到错误yarn start
Error: Cannot find module 'lodash.template'
Require stack:
- C:\Desktop\react\myapp\node_modules\workbox-build\build\lib\populate-sw-template.js
- C:\Desktop\react\myapp\node_modules\workbox-webpack-plugin\build\generate-sw.js
- C:\Desktop\react\myapp\node_modules\workbox-webpack-plugin\build\index.js
- C:\\Desktop\react\myapp\node_modules\react-scripts\config\webpack.config.js
- C:\Desktop\react\myapp\node_modules\react-scripts\scripts\start.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
at Function.Module._load (internal/modules/cjs/loader.js:725:27)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (C:\Users\vanst\OneDrive\Desktop\react\myapp\node_modules\workbox-build\build\lib\populate-sw-template.js:10:18)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19) {
code: 'MODULE_NOT_FOUND',
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! myapp@0.1.0 start: `react-scripts start`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the myapp@0.1.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\AppData\Roaming\npm-cache\_logs\2020-10-28T16_45_32_029Z-debug.log
我可以通过运行来解决这个问题npm install loadash --save
,但我每次都必须手动安装这个模块。
- 每次我在我的项目中安装一个新的包/库时,
yarn start
除非我重新安装node_modules
.
有没有人遇到过类似的问题?
更新1:问题1也可以通过删除node_modules
重装解决。但是,我仍然不知道是什么原因造成的,以及为什么这样做有效。
更新 2:这是我第一次初始化项目时 package.json 的样子:
{
"name": "temp",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
"@testing-library/user-event": "^12.1.10",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"web-vitals": "^1.0.1"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
解决方案
- 尽量不要组合数据包管理器——它们不倾向于一起工作(锁信息不同步);如果您倾向于
yarn
用于启动脚本,那么yarn
也可以使用用于数据包管理 - 文件通常不会从中消失
node_modules
,可能是您机器上的一些防病毒操作,我非常怀疑这一点 - 检查数据包管理器是否安装了依赖项的相应锁定文件(
package-lock.json
fornpm
或yarn.lock
for );yarn
yarn 还在目录中创建附加.yarn-integrity
文件node_modules
以跟踪已安装的模块
推荐阅读
- go - 解析 io.ReadAll 以匹配特定表达式
- android - 从视图模型类中获取活动的上下文
- string - 在 python 3.6 中从 amount=Decimal('123') 转换为 amount=123
- angularjs - AngularJS:嵌套的 http 调用不会更新视图
- sql - Oracle SQL 性能优化
- unity3d - 如何在unity3D中使用AVPro视频下载视频时播放视频?
- react-native - 如何在 react native 中使用 gridview 构建主屏幕?
- python - 无法解释 Tensorflow 图的 memory_profiler 结果
- swift - 如何以编程方式将标签添加到 Swift 中的 UIButton
- ruby-on-rails-4 - 使用自定义狂欢控制器的视图关联特定角色的问题