【问题标题】:Unexplainable Typescript compiler error on Visual Studio Code on a MacMac 上的 Visual Studio Code 上出现无法解释的 Typescript 编译器错误
【发布时间】:2021-02-22 22:07:27
【问题描述】:

由于 Visual Studio Code 中的 Typescript 错误,我无法再构建我的项目。

我正在和一位同事结对编程;我喜欢使用 Yarn,他们喜欢使用 NPM(是的,我知道混合和匹配包管理器很糟糕)。我最近将他们的分支下载到我的本地机器并遇到了一系列错误。不幸的是,我已经没有关于如何解决的想法。任何帮助将不胜感激。

错误 #1:

Your project contains lock files generated by tools other than Yarn. It is advised to not mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json

我删除了 package-lock.json。

错误 #2:

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined
    at validateString (internal/validators.js:125:11)
    at Object.join (path.js:1147:7)
    at noopServiceWorkerMiddleware (/Users/me/Desktop/DevSep09/frontend/react/node_modules/react-dev-utils/noopServiceWorkerMiddleware.js:14:26)
    at Layer.handle [as handle_request] (/Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/index.js:317:13)
    at /Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/index.js:335:12)
    at next (/Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/index.js:275:10)
    at launchEditorMiddleware (/Users/me/Desktop/DevSep09/frontend/react/node_modules/react-dev-utils/errorOverlayMiddleware.js:20:7)
    at Layer.handle [as handle_request] (/Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/index.js:317:13)
    at /Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/index.js:335:12)
    at next (/Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/index.js:275:10)
    at handleWebpackInternalMiddleware (/Users/me/Desktop/DevSep09/frontend/react/node_modules/react-dev-utils/evalSourceMapMiddleware.js:42:7)
    at Layer.handle [as handle_request] (/Users/me/Desktop/DevSep09/frontend/react/node_modules/express/lib/router/layer.js:95:5)

我通过项目删除了所有节点模块文件夹,并使用这些命令清除了 VS 缓存:

Clear Editor History
rm -rf ~/Library/Application\ Support/Code/Cache/*
rm -rf ~/Library/Application\ Support/Code/CachedData/*

我重新安装了所有库,然后尝试重建

yarn install
yarn upgrade
yarn build

仍然,我得到了这个编译错误(但我没有接触任何与这个组件相关的文件):

/Users/me/Desktop/DevSep09/frontend/react/src/components/reviews/ReviewPage/ReviewPage.tsx
TypeScript error in /Users/me/Desktop/DevSep09/frontend/react/src/components/reviews/ReviewPage/ReviewPage.tsx(25,38):
Object is of type 'unknown'.  TS2571

我也把Node更新到了最新版本,还是没有骰子。

【问题讨论】:

  • 我知道这可能没什么帮助,但你已经知道你正在尝试让 yarn 做一些 yarn 本身告诉你不要做的事情。如果你使用 npm,你会遇到同样的问题吗?
  • 在同一个项目上工作的其他开发人员没有遇到类型错误通常是由于解决了不同版本的 npm 包(通过 yarn 或 npm)。这使得包之间的类型不对齐并出现错误。如果已解决较新版本的 Typescript,则还可能会应用最初未遵守的额外规则。通常包锁或纱线等效物会处理这个问题,但我认为由于包管理器的不匹配,这被忽略了。
  • 不,我的伙伴正在使用 NPM 并且没有编译错误,所以很可能是一些不匹配的依赖项,但仍然没有找到它。

标签: javascript reactjs typescript visual-studio visual-studio-code


【解决方案1】:

我喜欢用 Yarn,他们喜欢用 NPM

最好的解决方案是移动到其中一个,然后你们都会得到同样的错误。

另类

  • 您将首先让它与 NPM 或 YARN 一起工作。我假设你可以使用 npm。
  • 然后您将锁定文件存储在另一个文件夹中
  • 现在使用 YARN 运行以获取锁定文件。
  • 现在痛苦地比较 yarn 和 npm 锁文件,看看是什么不同的瞬态依赖导致了问题
  • 现在将临时依赖项作为硬依赖项添加到您的 package.json 中,以便 YARN 和 NPM 安装正确的版本。

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 2015-07-10
    • 2020-12-22
    • 1970-01-01
    • 2017-11-02
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多