在我的项目中,我有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,
我试过了:
@types/node
我缺少任何特殊tsconfig
设置或我做错了什么?
答案 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