首页 > 解决方案 > 每次安装软件包时都必须重新安装 node_modules

问题描述

我有两个关于 react.js 的问题:

  1. 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,但我每次都必须手动安装这个模块。

  1. 每次我在我的项目中安装一个新的包/库时,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"
    ]
  }
}

标签: node.jsreactjs

解决方案


  1. 尽量不要组合数据包管理器——它们不倾向于一起工作(锁信息不同步);如果您倾向于yarn用于启动脚本,那么yarn也可以使用用于数据包管理
  2. 文件通常不会从中消失node_modules,可能是您机器上的一些防病毒操作,我非常怀疑这一点
  3. 检查数据包管理器是否安装了依赖项的相应锁定文件(package-lock.jsonfornpmyarn.lockfor );yarnyarn 还在目录中创建附加.yarn-integrity文件node_modules以跟踪已安装的模块

推荐阅读