我正在用React做一个项目,遇到了一个让我难住的问题。

当我运行yarn start时,我得到这个错误:

TypeError [ERR_INVALID_ARG_TYPE]: "path"参数必须是类型 字符串。接收类型未定义

我不知道为什么会这样。


我只是在安装和删除一些npm包后遇到了这个问题,花了将近5个小时来弄清楚发生了什么。

我所做的基本上是复制我的src/components到一个不同的目录,然后删除所有的节点模块和包锁。json(如果你在Docker容器中运行你的应用,为了安全起见,删除图像并重新构建它);然后把它重置为我的最后一次提交,然后放回我的src/components,然后运行NPM i。

我希望这能有所帮助。

要解决这个问题,只需升级react-scripts包(用npm info react-scripts version检查最新版本):

替换在你的包里。Json "react-scripts": "^3.x。X "和"react-scripts": "^3.4.1"(或最新可用版本) 删除你的node_modules文件夹 运行npm install或yarn install

一些人报告说这个问题是由运行npm审计修复引起的(避免它!)

我也遇到过这个问题,并通过从“react-scripts”:“3.x”升级react-scripts包来解决它。X "到"react-scripts": "^3.4.1"(或最新可用版本)。

删除“node_modules\”文件夹 删除package-lock。json文件 重写包。Json文件从"react-scripts": "3.x。X " to "react-scripts": "^3.4.1" 重新安装节点包 现在,启动项目npm start

而且很管用!!

我们从react-scripts中弹出,因此不能简单地升级包。Json条目来修复这个问题。

相反,我们这样做了:

在新目录下创建一个新项目-> $> NPX create-react-app foo-project 然后弹出它-> CD ./foo-project && NPM运行弹出 现在将/foo-project/config中的文件复制到我们的主应用程序的config目录中,并启动您的开发服务器

希望这能帮助到其他有类似困境的人。

去你的package.json 修改“react-scripts”:“3.x。X”到“react-scripts”:依赖项中的“^3.4.0” 重新安装react-scripts: npm I react-scripts 启动你的项目:npm Start

如果你有一个弹出的create-react-app,我建议:

通过Create - React -app创建一个新的React应用。 通过npm run Eject或yarn Eject来弹出它。 安装package.json中缺少的所有包。 复制src文件夹,假设所有代码都位于该文件夹中。 如果需要,重做配置和脚本文件夹上的更改。

为我工作。

我尝试了上面描述的各种方法,但没有一个工作,因为我已经弹出了我的css。最后,应用以下步骤会有所帮助:

upgrade ereact-scripts from "react-scripts": "3.x。X " to "react-scripts": "^3.4.0" 降级react- devi -utils格式为"react- devi -utils": "^10.x. "X " to "react-dev-utils": "10.0.0" 删除node-modules文件夹和package-lock.json/yarn.lock 重新安装npm install/yarn install

如果您弹出并感到好奇,CRA回购上的这个变化是导致错误的原因。

要修复它,你需要应用他们的更改;即最后一组文件:

包/ react-scripts / config / paths.js 包/ react-scripts / config / webpack.config.js 包/ react-scripts / config / webpackDevServer.config.js 包/ react-scripts / package.json 包/ react-scripts /脚本/ build.js 包/ react-scripts /脚本/ start.js

就我个人而言,我认为你应该手动应用这些更改,因为除非你一直在更新所有的更改,否则你可能会给你的webpack包引入另一个错误(因为依赖不匹配或其他原因)。

或者,你可以按照Geo Angelopoulos的建议去做。这可能需要一段时间,但至少您的项目将与CRA回购同步(并获得它们所有最新的增强!)

运行npm i react-dev-utils@10.0.0解决了我的问题。

遵循以下步骤。我也遇到了同样的问题。

删除整个node_modules文件夹。 拆下包锁。json文件。 运行命令NPM install NPM -install,如图所示: 开始了。npm开始…,沃

就我而言,这是因为我(一度)安装了reactn,它也包含了自己的React版本(出于某种原因)。

安装完成后(即使再次卸载),仍会出现此错误。

我只是删除了node_modules并再次运行npm install,它工作了。

如果你已经弹出,这是解决这个问题的正确方法:

找到这个文件config/webpackDevServer.config.js,然后在这个文件中找到以下一行:

app.use(noopServiceWorkerMiddleware());

你应该把它改成:

app.use(noopServiceWorkerMiddleware('/'));

对我(可能还有你们中的大多数人)来说,service worker是在项目的根源处服务的。如果它对你不同,你可以传递你的基路径。

只需将反应脚本更新到最新版本。

yarn add react-scripts@latest

或者如果使用NPM

npm install react-scripts@latest

只需要删除并重新安装反应脚本

删除 Yarn删除反应脚本 添加 Yarn添加反应脚本

然后rm -rf node_modules/ yarn。锁纱

记住不要经常更新react-scripts版本

我在流水线上运行时也遇到了同样的问题。

对我来说,问题是我在docker容器中使用的节点版本为v10.0.0。

更新到v14.7.0为我解决了这个问题

其他的解决方法对我都不起作用。

但是,将这个添加到我的包中。Json为我解决了这个问题:

"resolutions": {
  "react-dev-utils": "10.0.0"
},

将HOME环境变量设置为适当的值为我修复了这个问题。

我通过在nvm中设置一个新版本的节点作为默认值来修复这个问题,即:

nvm alias default 12.XX.X

我不想升级react-scripts,所以我使用第三方的重新安装npm模块来重新安装它,它工作了。

npm i -g npm-reinstall
reinstall react-scripts

我在盖茨比博客上也遇到了同样的问题。依赖项无法升级,只能在npm 10.22.1版本上运行。

对我有效的方法如下:

#!/bin/bash
rm -rf .cache
rm -rf public
gatsby build
gatsby serve

基本上完全重建了所有东西,这个错误就消失了。很烦人,但至少它能构建。

更奇怪的是,如果我调整博客文章的图像,比如稍微调整一下大小,它就会生成。我完全不知道为什么。但这至少是个线索。

如果您有一个弹出的CRA, webpack-dev-server配置有一些更改,如果保持不变将抛出此错误。比较刚弹射出来的cra4。x配置到我的cra3。X配置显示了对函数的一些更改,这些函数以前不接受参数,现在接受了。

在我的例子中,一个突破性的变化是添加了通往noopServiceWorkerMiddleware函数的路径。添加在缺失的路径noopServiceWorkerMiddleware(paths.publicUrl)为我修复了这个问题。

如果你发现很难在react.js文件中显示图像,我尝试在youtube上搜索。 它建议在“公共”文件夹(而不是“src”文件夹)中添加图像。

尽管仍然在寻找为什么在src文件夹中添加图像没有成功的原因。

链接:

https://www.youtube.com/watch?v=taMJct5oeoI&ab_channel=EsterlingAccime

https://daveceddia.com/react-image-tag/

我也有同样的问题,运行npm install react-scripts@latest解决了我的问题。

简单地升级反应脚本版本解决了我的问题。 从" React-scripts ": "3.x。X "到"react-scripts": "^3.4.1"(或最新可用版本)。 避免删除package-lock。json马上。先试试这个,如果不行,再进一步。

从powershell切换到bash为我解决了这个问题。

这与react无关,正如所指定的错误一样,undefined不被接受为path参数。确保没有将变量传递给path。恰巧未定义或为空的连接。 例如:

const {path} = require('path'); 
let arg = undefined;
let mypath = path.join(__dirname, arg);

// The same error would occur. 

在我的例子中,我之前改变了文件夹路径,然后只有我在使用npm start时得到了这个错误。

因此,我将文件夹路径C:\Users\User\Documents\### Coding\todo-app更改为C:\Users\User\Documents\Coding\todo-app,然后它就工作了。

我认为问题是在文件夹名称中使用了这些特殊字符。

当运行无参数的react-native bundle命令时,也会出现非常类似的错误(误导)。

为成功运行提供——entry-file和——bundle-output:

react-native bundle --entry-file ./index.js --bundle-output ./index.jsbundle

如果您在package中添加了一个包。Json,然后你删除了它。记住要删除添加在/config/plugin.js或任何与该包相关的地方的任何配置。

在同一个目录包里。json, package-lock。Json和yarn.lock。它帮助我删除纱线。锁目录。尽管我不想使用纱线,但它还是以某种方式添加到我的项目中