Svelte 'node scripts/setupTypeScript.js' 给出'MODULE_NOT_FOUND'错误



我在一个Svelte项目,我有一个问题:

  • 我的文件在VSCode中没有显示错误,但是当执行npm run dev --时,所有Typescript语法都显示为错误,服务器无法启动。

所以我试着删除所有node_modules并重新安装它们,但现在当我运行node scripts/setupTypeScript.js时,我有以下错误:

node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module 'C:(...)my-appscriptssetupTypeScript.js'
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}

我尝试全局重新安装TypeScript (npm install typescript@latest -g),但没有帮助。我没有发现任何人有同样的问题…

——注意,它工作得很好,直到我做了一些我不记得的事情(试图写一些东西,但它被接收为快捷方式并篡改了我的文件-我在git repo中找不到任何特殊的差异,除了package.json一些版本(TS相关)升级。)

编辑

(在重复我的错误之前,请查看下面的答案)

显然./scripts/文件夹应该存在,但不存在。所以我重新创建了它:

mkdir tmp
cd tmp
npx degit sveltejs/template svelte-typescript-app
cp -r svelte-typescript-app/scripts ../
cd ../
rm -r tmp

但是现在运行它会给我一个以前没有的错误:

> node scripts/setupTypeScript.js
node:internal/fs/utils:344
throw err;
^
at Object.renameSync (node:fs:980:3)
at Object.<anonymous> (C:(...)my-appscriptssetupTypeScript.js:44:4)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
errno: -4058,
syscall: 'rename',
code: 'ENOENT',
path: 'C:(...)my-appsrc\main.js',
dest: 'C:(...)my-appsrc\main.ts'
}

实际上它正在尝试将main.js转换为main。但是因为我已经运行过了,所以它不起作用。所以我把它重命名为main.js,它是成功的,但现在运行npm run dev --给了我一个关于Error: Identifier 'sveltePreprocess' has already been declared的错误,事实上,它在rollup.config.js中出现了两次,只是删除冗余解决了这个问题。警告:有其他重复行。

结论

最后我仍然有语法错误弹出,scripts/目录又消失了。请看下面的答案

看起来好像这个路径(scripts/setupTypeScript.ts)不存在。是否在包含scripts文件夹的文件夹中运行node命令?

所以,对于那些处于相同情况的人,这里是详细的解释:

  • setupTypeScript.js不工作,因为目录scripts/缺失。
  • 如果你已经运行了它,脚本会自动删除它自己和它的文件夹。(为什么它没有…)
  • 事实是,你不应该重新运行脚本setupTypeScript.js第二次
  • 如果你不确定你是否已经运行它,检查文件main.js/ts,如果它被命名为:main.ts脚本setupTypeScript.js可能已经运行。
  • 如果你认为你没有执行脚本setupTypeScript.js,你需要做,但没有它,那么你可以像这样下载它
npx degit sveltejs/template/scripts scripts

如果你的主脚本已经命名为main.ts,它会抛出一个错误(at Object.renameSync (node:fs:980:3)),然后将其重命名为main.js.
如果你已经运行了脚本,它会复制rollup.config.js中的一些行,确保:import sveltePreprocess from 'svelte-preprocess';import typescript from '@rollup/plugin-typescript';不重复。

希望有帮助。

最新更新