移除node_modules后npm start报错:allowedHosts[0]需非空字符串
问题描述
推送代码到Git时因文件过大受阻,删除node_modules后执行npm start报错:
Invalid options object. Dev Server has been initialized using an options object that does not match the API schema.
- options.allowedHosts[0] should be a non-empty string.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! dlfrontend@0.1.0 start:react-scripts start
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the dlfrontend@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:
已尝试重装nodemon、执行npm run start、使用备份的node_modules,问题依旧。项目的package.json内容如下:
{ "name": "dlfrontend", "version": "0.1.0", "proxy": "http://localhost:3000", "private": true, "dependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", "@fortawesome/fontawesome-svg-core": "^6.4.2", "@fortawesome/free-solid-svg-icons": "^6.4.2", "@fortawesome/react-fontawesome": "^0.2.0", "@mui/material": "^5.14.3", "@mui/styled-engine-sc": "^5.12.0", "@mui/x-data-grid": "^6.10.2", "@syncfusion/ej2-react-filemanager": "^22.2.5", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "axios": "^1.4.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-dropzone": "^14.2.3", "react-router-dom": "^6.14.2", "react-scripts": "5.0.1", "react-toastify": "^9.1.3", "styled-components": "^5.3.11", "web-vitals": "^2.1.4" }, "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" ] } }
解决方案
这个错误核心是allowedHosts配置存在空值,和node_modules本身无关,按以下步骤排查修复:
检查环境变量配置
查看项目根目录下的.env、.env.development等环境文件,确认是否有HOST=或ALLOWED_HOSTS=这类空配置项,直接删除空项,或者设置为合法主机地址(比如localhost)。清理缓存并重装依赖
执行以下命令彻底清理缓存、移除旧依赖文件后重新安装:npm cache clean --force rm -rf node_modules package-lock.json npm install手动指定allowedHosts(可选)
如果环境变量排查无果,可通过自定义配置覆盖Dev Server设置:- 先安装依赖:
npm install react-app-rewired --save-dev - 在项目根目录创建
config-overrides.js,添加内容:module.exports = function override(config, env) { config.devServer = { ...config.devServer, allowedHosts: ['localhost'] }; return config; }; - 修改
package.json的scripts字段:"scripts": { "start": "react-app-rewired start", "build": "react-app-rewired build", "test": "react-app-rewired test", "eject": "react-scripts eject" }
- 先安装依赖:
检查配置文件完整性
确认删除node_modules时没有误删其他配置文件,或者Git操作后是否有配置项缺失。
内容的提问来源于stack exchange,提问作者Kam
相关产品推荐
相关产品推荐

