首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在node_modules文件夹中找到模块(但文件存在)

无法在node_modules文件夹中找到模块(但文件存在)
EN

Stack Overflow用户
提问于 2021-06-10 17:20:24
回答 3查看 1.6K关注 0票数 4

当我运行yarn run watch (在我的laravel项目根中)时,它编译时没有错误。但是,如果我之后编辑了一个文件,它就会显示resources文件夹中的每个resources文件在终端上都有一个错误。.vue文件中的类型记录没有问题。还请注意,我所做的每一个改变似乎也是编译的,所以换句话说,它是有效的.但是错误消息保留在控制台中。

对于每个.ts文件,我得到的错误是:

代码语言:javascript
复制
TS2307: Cannot find module '!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js' or its corresponding type declarations.

此文件确实存在于我的node_module文件夹中。

我在谷歌上搜索了它,我找到的唯一一件与我的问题很近的东西就是这个链接:https://github.com/vuejs/vue-loader/issues/634

但建议的解决方案/解决办法对我都没有用。

这是我的tsconfig

代码语言:javascript
复制
{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "experimentalDecorators": true,
    },
    "include": [
        "resources/js/**/*"
    ],
    "exclude": [
        "vendor",
    ]
}

我怀疑这要么是ts-loadervue-loader中的配置问题,要么是版本问题。

代码语言:javascript
复制
"ts-loader": "^8.2.0",
"typescript": "^4.3.2"
"vue-loader": "^15.7.0",

webpack配置:

代码语言:javascript
复制
module: {
            rules: [
                {
                    test: /\.tsx?$/,
                    loader: "ts-loader",
                    options: {appendTsSuffixTo: [/\.vue$/]},
                    exclude: /node_modules/
                },
            ]
        },
        resolve: {
            extensions: ["*", ".js", ".jsx", ".vue", ".ts", ".tsx"]
        }

请记住,我必须使用8.2.,这样才能使laravel能够使用它。我还使用vue-class-componentsvue-property-decator

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-02 18:24:26

在几个项目中,我遇到了完全相同的问题,唯一的区别是我使用的是Symfony的webpack-encore,它的tsconfig.json略有不同,但我想根本的问题可能是一样的。

在我的例子中,我使用一个app.js文件作为入口文件。将此更改为app.ts解决了此问题。我不知道这为什么重要(也许任何人都可以详细说明)。

票数 5
EN

Stack Overflow用户

发布于 2021-06-10 18:21:31

如果你没有加入到webpack的配置中。

https://vue-loader.vuejs.org/guide/pre-processors.html#typescript

代码语言:javascript
复制
module.exports = {
  resolve: {
    // Add `.ts` as a resolvable extension.
    extensions: ['.ts', '.js']
  },
  module: {
    rules: [
      // ... other rules omitted
      {
        test: /\.ts$/,
        loader: 'ts-loader',
        options: { appendTsSuffixTo: [/\.vue$/] }
      }
    ]
  },
  // ... plugin omitted
}

如果它不起作用,请尝试如下

将您的打字本改为“打字本”:"~3.9.3",

票数 0
EN

Stack Overflow用户

发布于 2021-06-21 23:47:57

这是一个比较理智的检查回答,我不知道多少关于拉拉,对不起。但是..。

  1. 如果“文件”存在于您可以在node_modules中找到的范围内
  2. 如果在tsconfig或其他任何地方没有任何东西可以排除此解析行为
  3. 如果该提交中的文件确实存在并导出一个函数(并且在很长一段时间内都是这样)
  4. 如果你真的在用纱线

在这一切中,我肯定会排除一件事:纱线链纱线工作区。这些可能是由于一些未知的原因(可能不是后者,这将是相当明显的你),并导致这种奇怪的原因。

有一件事可以迅速排除掉前者(离题链接):

代码语言:javascript
复制
rm <YARN_CONFIG_DIR>/link/*

通常

代码语言:javascript
复制
rm ~/.config/yarn/link/*
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67925815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档