![](/img/trans.png)
[英]Why do I have to delete and reinstall all node modules every time I restart my PC?
[英]Have to reinstall node_modules every time I install a package
我有兩個關於 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
來解決這個問題,但我每次都必須手動安裝這個模塊。
node_modules
,否則yarn start
將無法正常工作(通常它會報告缺少某些模塊)。有沒有人遇到過類似的問題?
更新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
為npm
或yarn.lock
為yarn
)是否包管理器已安裝依賴項; yarn 還在node_modules
目錄中創建額外.yarn-integrity
文件來跟蹤已安裝的模塊你使用的是最新版本的 NPM/Yarn 嗎?
選一個,同一個項目里有兩個package管理器不好。
如果您選擇了 yarn,請刪除 package-lock.json;如果您選擇 npm,請刪除 yarn-lock。
刪除 node_modules 文件夾
將選擇的更新到最新版本:
npm 安裝 --global yarn
npm 安裝 --global npm
使用一個安裝所有軟件包:
紗
npm安裝
然后使用選擇的安裝 lodash.template:
紗線添加 lodash.template
npm 安裝lodash.template
再次嘗試運行您的項目。 步驟很簡單,但一個干凈的項目會有所作為。
刪除節點模塊和 package-lock.json 並運行
yarn
lodash.template package 和lodash之間存在差異。 如果您缺少 lodash.template 然后運行:
yarn add lodash.template
根據您的package.json您缺少此依賴項。 通過添加紗線,這將更新您的 package.json 和yarn.lock文件。 該問題可能會被永久修復。
當您運行yarn add lodash.template
時,它是否出現在package.json
的依賴項中? 也許紗線不能寫你的package.json
文件? 你的文件夾有寫權限嗎? 也許npx
已經從 root 用戶創建了這個文件夾,而您沒有任何編輯權限?
請刪除您的 node_modules 和 package-lock.json 並按照以下命令進行 lodash.template 安裝:
$ {sudo -H} npm i -g npm
$ npm i --save lodash.template
我也發生過一次。 安裝具有管理員權限的軟件包對我有用。
您是否嘗試刪除 node_modules 文件夾並清理 npm 緩存。 刪除 node_modules 文件夾后嘗試使用這些命令
$ npm 緩存清理
$ npm 安裝
您可以使用npm ci
這將刪除 node_modules 重新下載並為您安裝它們。 全部在一個命令中。 你可以在這里閱讀更多關於它的信息
您的require
語句之一很可能調用將其列為“不需要的依賴項”的依賴項(節點模塊)。 每當導入依賴項時,package 管理器將:
這適用於可以將模塊設置為在多個環境中運行的情況。 該模塊可以為測試環境導入一個子模塊,但在生產環境中將其指定為不需要。
這是使用多個 package 管理器的問題。 package 管理器旨在確保您的所有封裝都能很好地協同工作。 但是,如果您混合搭配,它們通常會最終相互對抗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.