问题描述
我的VS代码说,即使我的WebPack构建仍然可以工作,也找不到导入。
这是导入...
import * as tf from '@tensorflow/tfjs';
以及来自VS Code的消息:
找不到模块'@ tensorflow / tfjs'。您是要将“ moduleResolution”选项设置为“ node”,还是要向“ paths”选项添加别名?
我已阅读有关路径别名的内容,可以在tsconfig.json
中进行设置,以缩短通往模块的长路径。但是,如果这是路径别名,而我没有在tsconfig.json
中配置它,WebPack如何知道模块的位置?
我还读到,路径别名的约定以“ @”开头,但是“ node_modules”本身中的文件夹称为“ @tensorflow”,因此我不知道它是否真的是路径别名,并且如果不是,也许WebPack神奇地知道它必须在“ node_modules”中搜索该模块?
如您所见,我对此感到非常困惑,如果有人可以帮我解决这个问题,并解释我为阻止VS Code抱怨导入而必须采取的措施,我将感到非常满意。
解决方法
自行找到解决方案。
我只在“ path”选项中找到关于在tsconfig.json中明确定义别名的东西,但这不能解决我的问题,因为在我的其他Angular项目中,即使我定义了这样的东西,也没有我在这里使用@Angular导入很多,没有这个问题。
但是后来我在Angular项目"moduleResolution": "node"
中发现了这一点。
如打字稿文档所述:
但是,对非相对模块名称的解析则不同。 Node会在名为node_modules的特殊文件夹中寻找您的模块。
而且,它确实有效。是的,自从我的问题在VS Code的消息中编写该代码以来,我可能早就尝试过此方法,但是我虽然这仅适用于node.js特定项目,但我在任何地方都没有读过。