代码之家  ›  专栏  ›  技术社区  ›  Petr Peller

编译器未抛出“找不到模块”错误

  •  7
  • Petr Peller  · 技术社区  · 8 年前

    在我的项目中,我有两个文件:

    福。js

    const image = require('../this/path/is/wrong.png');

    喝倒采tsx

    const image=require(“../this/path/is/error.png”);

    在里面 福。js TypeScript正确地发现映像不存在,并抛出“找不到模块”错误,但不会为该映像抛出任何错误 喝倒采tsx 因此,只有当应用程序崩溃时,漏洞才会在运行时出现。

    如果我重新命名 喝倒采tsx 喝倒采js TS再次开始按预期抛出错误。

    以下是我认为与之相关的一些编译器选项:

    "module":"es2015",
    "target": "es2015",
    "jsx": "react",
    "moduleResolution":"Node",
    "allowJs": true,
    

    我试过:

    • 不同的模块和模块解决方案设置
    • 使用导入而不是require
    • 有无 @types/node

    有什么特别的吗 tsconfig 我缺少设置或我做错了什么?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Daniel Rosenwasser    8 年前

    这个 require 函数在函数中没有特殊意义 .ts .tsx 文件,因为TypeScript只使用识别语法进行导入。

    在一个 .js 存档 allowJs ,它使用启发式,并识别 要求 打电话是重要的。

    对于TypeScript来说,更等效的东西是

    import image = require('../this/path/is/wrong.png');
    

    或ES模块语法之一,例如

    import * as foo from "foo";
    
    import foo from "foo";
    
        2
  •  0
  •   deowk    8 年前

    尝试添加 "allowSyntheticDefaultImports": true 给你的 tsconfig