我正在用React做一个项目,遇到了一个让我难住的问题。
每当我运行yarn start时,都会得到这个错误:
yarn start
TypeError [ERR_INVALID_ARG_TYPE]: The " path"参数必须为类型 字符串。接收类型未定义
我不知道为什么会这样。
我只是在安装和删除一些npm包后遇到了这个问题,花了将近5个小时来弄清楚发生了什么。
我所做的基本上是复制我的src/components到一个不同的目录,然后删除所有的节点模块和包锁。json(如果你在Docker容器中运行你的应用,为了安全起见,删除图像并重新构建它);然后将它重置为我的最后一次提交,然后放回src/components,然后运行npm i。
npm i
我希望这能有所帮助。
要解决此问题,只需升级react-scripts包(使用npm info react-scripts version检查最新版本):
npm info react-scripts version
"react-scripts": "^3.x.x"
"react-scripts": "^3.4.1"
npm install
yarn install
一些人报告说这个问题是由运行npm audit fix引起的(避免它!)。
npm audit fix
我也遇到过这个问题,并通过将react-scripts包从"react-scripts": "3.x.x"升级到"react-scripts": "^3.4.1"(或最新可用版本)来解决它。
react-scripts
"react-scripts": "3.x.x"
node_modules\
package-lock.json
package.json
npm start
而且很管用!!
我们从react-scripts中弹出,因此不能简单地升级包。Json条目来修复这个问题。
相反,我们这样做了:
$> npx create-react-app foo-project
cd ./foo-project && npm run eject
希望这能帮助到其他有类似困境的人。
去你的package.json
修改“react-scripts”:“3.x。X”到“react-scripts”:依赖项中的“^3.4.0”
重新安装react-scripts: npm I react-scripts
npm I react-scripts
开始你的项目:npm start
如果你有驱逐 create-react-app,我建议:
create-react-app
npm run eject
yarn eject
为我工作。
我尝试了上面描述的各种方法,但没有一个工作,因为我有驱逐我的css。最后,应用以下步骤会有所帮助:
"react-scripts": "^3.4.0"
react-dev-utils
"react-dev-utils": "^10.x.x"
"react-dev-utils": "10.0.0"
node-modules
yarn.lock
如果你弹出并感到好奇,CRA回购上的这种变化是导致错误的原因。
要修复它,你需要应用他们的更改;即最后一组文件:
就我个人而言,我认为你应该手动应用这些更改,因为除非你一直在更新所有的更改,否则你可能会给你的webpack包引入另一个错误(因为依赖不匹配或其他原因)。
或,你可以做Geo Angelopoulos建议的。这可能需要一段时间,但至少您的项目将与CRA回购同步(并获得它们所有最新的增强!)
运行npm i react-dev-utils@10.0.0解决了我的问题。
npm i react-dev-utils@10.0.0
遵循以下步骤。我也遇到了同样的问题。
运行命令npm install npm-install,如图所示:
npm install npm-install
开始了。npm开始…,沃
在我的例子中,这是因为我(一度)安装了reactn,它也包括自己的React版本(出于某种原因)。
reactn
安装完成后(即使再次卸载),仍会出现此错误。
我只是删除了node_modules并再次运行npm install,它工作了。
node_modules
如果你已经弹出,这是解决这个问题的正确方法:
找到这个文件config/webpackDevServer.config.js,然后在这个文件中找到下面的行:
config/webpackDevServer.config.js
app.use(noopServiceWorkerMiddleware());
你应该把它改成:
app.use(noopServiceWorkerMiddleware('/'));
对我(可能还有你们中的大多数人)来说,service worker是在项目的根源处服务的。如果它对你不同,你可以传递你的基路径。
只需将反应脚本更新到最新版本。
yarn add react-scripts@latest
或者如果使用NPM
npm install react-scripts@latest
只需要删除并重新安装react-scripts
yarn remove react-scripts
yarn add react-scripts
然后rm -rf node_modules/ yarn.lock && yarn
rm -rf node_modules/ yarn.lock && yarn
我在流水线上运行时也遇到了同样的问题。
对我来说,问题是我在docker容器中使用了node版本v10.0.0。
node
v10.0.0
将它更新为v14.7.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)修复了这一点。
noopServiceWorkerMiddleware
noopServiceWorkerMiddleware(paths.publicUrl)
尽管仍然在寻找为什么在src文件夹中添加图像没有成功的原因。
链接:
https://www.youtube.com/watch?v=taMJct5oeoI&ab_channel=EsterlingAccime
https://daveceddia.com/react-image-tag/
我有同样的问题,运行npm install react-scripts@latest解决了我的问题。
从powershell切换到bash为我解决了这个问题。
这与react无关,因为指定了错误,undefined不被接受为路径参数。确保没有将变量传递给path。恰巧未定义或为空的连接。 例如:< / p >
react
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,然后它就工作了。
C:\Users\User\Documents\### Coding\todo-app
C:\Users\User\Documents\Coding\todo-app
我认为问题是在文件夹名称中使用了这些特殊字符。
当运行不带参数的react-native bundle命令时,也会发生非常类似的(误导性的)错误。
react-native bundle
为成功运行提供--entry-file和--bundle-output:
--entry-file
--bundle-output
react-native bundle --entry-file ./index.js --bundle-output ./index.jsbundle
如果你在package中添加了包。Json,然后你删除了它。记住要删除在/ config / plugin.js中添加的任何配置或任何与该包相关的地方。