我有两个关于 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"
]
}
}
答案 0 :(得分:3)
yarn
来启动脚本,那么也可以使用 yarn
进行数据包管理node_modules
中消失,可能是您机器上的一些防病毒操作,我对此表示高度怀疑package-lock.json
为npm
,或yarn.lock
为yarn
)包管理器是否已安装依赖项; yarn 还会在 .yarn-integrity
目录中创建额外的 node_modules
文件以跟踪已安装的模块答案 1 :(得分:1)
您使用的是最新版本的 NPM/Yarn 吗?
选择一个,在同一个项目中有两个包管理器不好。
如果您选择了 yarn 则删除 package-lock.json 或如果您选择 npm 则删除 yarn-lock。
删除 node_modules 文件夹
将所选的更新到最新版本:
npm install --global yarn
npm install --global npm
使用一个安装所有软件包:
纱线
npm 安装
然后使用所选的安装 lodash.template:
纱线添加 lodash.template
npm 安装 lodash.template
尝试再次运行您的项目。步骤很简单,但一个干净的项目会有所不同。
答案 2 :(得分:0)
删除节点模块和package-lock.json 并运行
yarn
答案 3 :(得分:0)
lodash.template 包和 lodash 之间存在差异。如果你缺少 lodash.template 然后运行:
yarn add lodash.template
根据您的 package.json,您缺少此依赖项。通过添加 yarn 这将更新您的 package.json 和 yarn.lock 文件。该问题可能会永久修复。
答案 4 :(得分:0)
当您运行 yarn add lodash.template
时,它是否出现在您的 package.json
依赖项中?
也许 yarn 无法写入您的 package.json
文件?你的文件夹有写权限吗?也许 npx
已从 root 用户创建了此文件夹,而您没有任何编辑权限?
答案 5 :(得分:0)
请删除您的 node_modules 和 package-lock.json 并按照以下命令进行 lodash.template 安装:
$ {sudo -H} npm i -g npm
$ npm i --save lodash.template
答案 6 :(得分:0)
我也遇到过一次。安装具有管理员权限的软件包对我有用。
答案 7 :(得分:0)
您是否尝试删除 node_modules 文件夹并清理 npm 缓存。删除 node_modules 文件夹后尝试使用这些命令
$ npm 缓存清理
$ npm 安装
答案 8 :(得分:0)
您可以使用 npm ci
这将删除 node_modules 重新下载并为您安装它们。全部在一个命令中。您可以阅读更多相关信息here
答案 9 :(得分:0)
您的一个 require
语句很可能调用了一个将其列为“不需要的依赖项”的依赖项(节点模块)。任何时候导入依赖项,
包管理器将:
这适用于可能将模块设置为在多个环境中运行的情况。模块可以为测试环境导入一个子模块,但在生产环境中将其指定为不需要。
这是使用多个包管理器的问题。包管理器旨在确保您的所有包都能很好地协同工作。然而,如果你混合搭配,它们往往最终会相互对抗。