首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tsc抛出“tsc 2307:找不到本地文件的模块”

tsc抛出“tsc 2307:找不到本地文件的模块”
EN

Stack Overflow用户
提问于 2016-05-31 14:40:37
回答 16查看 301.6K关注 0票数 141

我有一个使用TypeScript的简单示例项目:https://github.com/unindented/ts-webpack-example

运行tsc -p . (使用tsc版本1.8.10)引发以下内容:

代码语言:javascript
复制
app/index.ts(1,21): error TS2307: Cannot find module 'components/counter'.
components/button/index.ts(2,22): error TS2307: Cannot find module 'shared/backbone_base_view'.
components/button/index.ts(3,25): error TS2307: Cannot find module 'shared/backbone_with_default_render'.
components/counter/index.ts(2,22): error TS2307: Cannot find module 'shared/backbone_base_view'.
components/counter/index.ts(3,25): error TS2307: Cannot find module 'shared/backbone_with_default_render'.
components/counter/index.ts(4,27): error TS2307: Cannot find module 'shared/backbone_with_subviews'.
components/counter/index.ts(5,20): error TS2307: Cannot find module 'components/button'.

它抱怨本地文件的所有导入,如下所示:

代码语言:javascript
复制
import Counter from 'components/counter';

如果我将它更改为相对路径,它会工作,但我不想这样做,因为它会使我的生活变得更加困难,当我四处移动文件时:

代码语言:javascript
复制
import Counter from '../components/counter';

vscode代码库不使用相对路径,但是对它们一切都很好,所以我必须在我的项目中缺少一些东西:https://github.com/Microsoft/vscode/blob/0e81224179fbb8f6fda18ca7362d8500a263cfef/src/vs/languages/typescript/common/typescript.ts#L7-L14

您可以查看我的GitHub回购,但如果有帮助,这里是我正在使用的tsconfig.json文件:

代码语言:javascript
复制
{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "noImplicitAny": false,
    "removeComments": false,
    "preserveConstEnums": true,
    "sourceMap": true,
    "outDir": "dist"
  },
  "exclude": [
    "dist",
    "node_modules"
  ]
}

有趣的是,通过webpack使用ts-loader构建项目很好,所以我猜这只是一个配置问题。

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2016-06-01 12:37:16

@vladima回复GitHub上的这个问题

编译器解析模块的方式由moduleResolution选项控制,该选项可以是nodeclassic (更多细节和差异可以找到这里)。如果省略此设置,则编译器将此设置视为node,如果模块为commonjsclassic -否则。在您的情况下,如果希望classic模块解析策略与commonjs模块一起使用,则需要使用 { "compilerOptions":{ "moduleResolution":“节点”}}

票数 158
EN

Stack Overflow用户

发布于 2020-07-21 12:01:37

在某些情况下,只需更新include数组即可。

代码语言:javascript
复制
{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "moduleResolution": "node",
    "outDir": "dist",
    "sourceMap": false,
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src/**/*.ts", "tests/**/*.ts"],
  "exclude": ["node_modules", ".vscode"]
}
票数 32
EN

Stack Overflow用户

发布于 2021-12-21 02:32:11

我的问题是在不同的环境中进行建筑。在我的OSX构建中没有任何问题。但是当我试图构建Linux环境时,它失败了。这背后的原因是操作系统对大小写敏感。任何遭受此问题的人也请检查您的进口产品的大小写敏感性。

文件结构是:

代码语言:javascript
复制
/X/Y.ts

我的进口是:

代码语言:javascript
复制
import Y from "./x/Y.ts";

所以,我的修正是做"x“大写。

代码语言:javascript
复制
import Y from "./X/Y.ts";
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37548734

复制
相关文章

相似问题

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