在Next.js项目中导入时获取Cannot find module '' or its corresponding type declarations.
。
每次导入时都会发生这种情况。Preview
Yarn版本:3.1.0-修订版2
下一个版本:11.1.2
服务器配置.json:
{
"compilerOptions": {
"target": "es6",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"experimentalDecorators": true,
"resolveJsonModule": true,
"isolatedModules": true,
"importHelpers": true,
"jsx": "preserve",
// "baseUrl": "src"
},
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx"
],
"exclude": [
"node_modules"
],
}
6条答案
按热度按时间irtuqstp1#
也许只需重新启动TS服务器就可以了。
对比代码
类型:
ctrl + shift + p
选择:
> TypeScript: Restart TS server
igetnqfo2#
如果您使用的是yarn 3,那么您需要按照以下步骤设置您的VSCode:
yarn dlx @yarnpkg/sdks vscode
TypeScript
文件ctrl+shift+p
阅读此处了解其他编辑
fae0ux8s3#
我尝试了Cuong Vu和其他很多人建议的解决方案,但都不起作用。对我来说,起作用的是以下解决方案:
在Yarn 2/3中,由于PnP,对node_modules文件夹中的模块的支持被删除。请按照以下步骤解决此问题。
1.在项目根目录中创建一个
.yarnrc.yml
文件,1.在文件
nodeLinker: node-modules
中插入。1.在终端中运行命令
yarn
以重新创建node_modules文件夹。完成所有3个步骤后,问题将得到解决。
yquaqz184#
在尝试其他解决方案之前:
1.再次检查是否有
node_modules
文件夹1.如果没有,请运行
yarn
(或npm i
)以(重新)安装模块意外删除node_modules文件夹是
TS2307 Cannot find module ''
错误的最简单解释。OP评论也支持
“我没有node_module文件夹。只有.yarn和yarn.lock”
h/t@geisterfurz007的评论。
zkure5ic5#
我将它添加到了我的tsconfig.json文件中,我可以看到您已经有了它,但它不是我的解决方案的一部分
5n0oy7gb6#
我想为其他可能欣赏它们的人提供更多的背景和额外的注解。
1.只要重读@Vagnerlandio Nunes的答案,它就准确无误了。问题解决了!
1.回顾/解决方案2:我只是使用
npx create-next-app
引导了一个新项目,在Next.js的documentation之后使用npx create-next-app@latest --typescript
(使用yarn
)或运行yarn create next-app --typescript
。1.在得到@沃菲尔德的回答后,我注意到由于某种原因我没有
node_modules
文件夹,即使我运行了yarn
也没有创建它,我不得不运行npm i
来创建node_modules
文件夹,尽管我计划使用yarn
。这是我运行
yarn
时得到的日志。这是我运行
npm i
时得到的日志。现在问题解决了,错误消息也消失了!
1.但出于好奇,我再次运行了
yarn
,这是得到的输出。1.此外,如果您像我一样,尝试修改
tsconfig.json
文件至
因为你认为基于这个GitHub comment它会有帮助。你现在会看到一个新的错误消息
ts(2686): 'React' refers to a UMD global, but the current file is a module. Consider adding an import instead.
。如果你只是简单地执行了上面的步骤,这是不必要的。所以我只是把它改回来。1.也没有必要将
tsconfig.json
的"compilerOptions": { ... }
从"jsx": "preserve"
更改为"jsx": "react-jsx"
(参考另一个尝试的解决方案)。1.在任何时候,如果你想确保你所做的修改(关于tsconfig)已经生效,尝试command + shift + p并输入
> TypeScript: Restart TS server
,你应该看到一些刷新正在进行。