知道cross-env很久了,也知道它是用来跨操作系统设置环境变量的工具。但是我从来没认识到不同操作系统设置环境变量竟然真的不同。此次我真的认识到了!
故事是这样的。我用cra创建了一个react项目(npx create-react-app main-app --template typescript),项目默认是3000端口启动的,我想换一个端口启动,那么在windows上我只需要修改package.json中的start为set PORT=9999 && react-scripts start。这样确实起作用了,我此时却把cross-env的存在抛到九霄云外了,我错误地认为ubuntu下也可以这样。
然后打脸就来了,我尝试在ubuntu上运行,其实是阿里云上。但是启动后还是3000,也没有报错。我有点迷惑了。后来才认识到windows和linux真的是不同的呀,肤浅了,哈哈。
至此我只能老实地安装cross-env了
"start": "cross-env PORT=9999 react-scripts start"
这里说一下如果不用cross-env怎么在ubuntu下设置端口
"start": "PORT=9999 react-scripts start"
出于好奇,我去看了cross-evn的源码,可惜只看懂了一半,正则表达式是我永远的拦路虎,哈哈哈