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

时间:2018-06-16 23:03:02

标签: javascript reactjs typescript react-native

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

foo.js

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

boo.tsx

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

foo.js 中TypeScript正确发现图片不存在并抛出“找不到模块”错误,但 boo.tsx 没有引发任何错误当应用程序崩溃时,该错误仅显示在运行时。

如果我只是将 boo.tsx 重命名为 boo.js ,TS会再次开始按预期方式抛出错误。

这些是我认为可能相关的一些编译器选项:

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

我试过了:

  • 不同的模块和模块分辨率设置
  • 使用import而不是require
  • 有和没有@types/node

我缺少任何特殊tsconfig设置或我做错了什么?

2 个答案:

答案 0 :(得分:2)

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

.js文件allowJs中,使用启发式扫描,并将require调用识别为导入。

TypeScript更像是

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

或其中一个ES模块语法,例如

import * as foo from "foo";

import foo from "foo";

答案 1 :(得分:0)

尝试将"allowSyntheticDefaultImports": true添加到您的tsconfig