Windows运行MERN项目Babel启动脚本报'.'不是内部或外部命令如何解决
问题根因
- 核心报错原因是路径写法系统不兼容:你当前使用Windows系统,package.json的start命令中使用了仅Unix/Linux/macOS支持的
./前缀相对路径执行逻辑,Windows的cmd/PowerShell无法识别该写法,因此抛出「'.' 不是内部或外部命令」的错误。 - 额外潜在问题:项目依赖的mongoose为6.x版本,你当前写的数据库连接配置项中
autoReconnect、useNewUrlParser、useUnifiedTopology等参数已经被废弃/默认开启,后续启动后会触发警告甚至连接失败。
解决方案
第一步:修改package.json启动命令
将scripts中的start命令替换为跨平台兼容的写法,npm会自动查找node_modules下的可执行文件,无需手动写全路径:
"scripts": { "start": "babel-node --presets node8 ./server.js", "test": "echo \"Error: no test specified\" && exit 1" }
第二步:修正数据库连接配置
修改dbConnection对应的index.js文件中的options参数,适配mongoose 6.x版本规则:
const options = { maxPoolSize: 10, // 原poolSize参数在mongoose 6中已更名为maxPoolSize };
mongoose 6版本默认已经开启useNewUrlParser、useUnifiedTopology、keepAlive配置,无需手动传入;autoReconnect参数已被移除,传入会触发报错。
第三步:重新启动项目
删除本地的node_modules文件夹和package-lock.json文件,执行npm install重新安装依赖后,再运行npm start即可正常启动服务。
如果数据库连接失败,请检查本地MongoDB服务是否已正常启动,且连接地址端口配置正确。
内容的提问来源于stack exchange,提问作者Krishnadev. V
相关产品推荐
相关产品推荐

