(顺便说一句,这是在 Mac 上。Mac 上的
cp -r
似乎是“历史性的”,应该用 cp -R
代替)。
我尝试了以下方法:
mkdir TryContext
cd TryContext
npx create-react-app my-app
cd my-app
然后我制作了一个可以运行的应用程序,并且
npm start
能够启动服务器并运行它。
但是如果我想制作此应用程序的版本 2,并首先克隆文件夹:
cd ..
cp -r my-app my-app-02
将所有内容复制到
my-app-02
,并将 cd
复制到该文件夹中并执行 npm start
,它将出错,并显示
> [email protected] start /Users/username/code/TryContext/my-app-02
> react-scripts start
internal/modules/cjs/loader.js:800
throw err;
^
Error: Cannot find module '../scripts/start'
我尝试了不同的方法,尝试了
npm rebuild
,然后npm start
,并且成功了。但我想如果你“按原样”复制一个目录,然后使用它,npm start
应该启动服务器而不需要做任何事情?为什么会这样?除了npm rebuild
之外还有什么方法可以解决这个问题?
TL;RD:当您使用
cp -r
复制时,它并没有真正保留符号链接,它只是复制文件内容。因此,在这种特殊情况下,npm start
找不到必要的符号链接。可能的解决方案之一是在应对时使用 cp -a
,这样可以保留符号链接并避免此问题。
模式详细答案在这里