导入 config.json 文件时打字稿总是出错

Posted

技术标签:

【中文标题】导入 config.json 文件时打字稿总是出错【英文标题】:Typescript always errors when importing a config.json file 【发布时间】:2019-08-23 23:21:49 【问题描述】:

我正在使用最新版本的 Visual Studio Code。 VS Code 使用的是 Typescript v3.3.3。 我已经通过 npm 在本地(save-dev)和全局安装了以下软件包:

    TestCafe v1.1.0 Core-JS v3.0. TypeScript v3.4.1

我还创建了一个 tsconfig.json 文件并添加了属性 - “resolveJsonModule: true”

我创建了一个 config.json 文件,并且在添加上面的 resolveJsonModule 属性后,它在我的 .ts 文件中被正确拾取 -

Import config from './config.json';

但是,每当我运行我的脚本时,我都会收到以下错误:

    Error: TypeScript compilation failed.
    /Users/test/Documents/Dev_Node/TestCafe/UK/homepage-fixture.ts (2, 20): 
    Cannot find module './config.json'. Consider using '--resolveJsonModule' 
    to import module with '.json' extension at Function._reportErrors (/Users/test/Documents/Dev_Node/TestCafe/node_modules/testcafe/src/compiler/te st-file/formats/typescript/compiler.js:45:15) at TypeScriptTestFileCompiler._reportErrors [as _precompileCode (/Users/test/Documents/Dev_Node/TestCafe/node_modules/testcafe/src/compiler/test-file/formats/typescript/compiler.js:79:40) at TypeScriptTestFileCompiler._precompileCode [as_compileCodeForTestFiles (/Users/test/Documents/Dev_Node/TestCafe/node_modules/testcafe/src/compiler/te 
st-file/api-based.js:110:29) at TypeScriptTestFileCompiler._compileCodeForTestFiles [as precompile (/Users/test/Documents/Dev_Node/TestCafe/node_modules/testcafe/src/compiler/test-file/api-based.js:169:21) at precompile (/Users/test/Documents/Dev_Node/TestCafe/node_modules/testcafe/src/compiler/index.js:70:48) at Compiler._precompileFiles (/Users/test/Documents/Dev_Node/TestCafe/node_modules/testcafe/src/compiler/index.js:66:54) at _precompileFiles (/Users/test/Documents/Dev_Node/TestCafe/node_modules/testcafe/src/compiler/index.js:105:91) at map (/Users/test/Documents/Dev_Node/TestCafe/node_modules/testcafe/src/compiler/i ndex.js:105:41)

我已经尝试过这里提供的解决方案:Typescript compiler error when importing json file

但它们都不适合我。

【问题讨论】:

“考虑使用'--resolveJsonModule'”。 【参考方案1】:

根据这个长期存在的问题:https://github.com/DevExpress/testcafe/issues/1845TestCafe 使用自己的 TypeScript 配置,并且不支持您使用的任何 tsconfig.json。

所以在我看来,您的选择是:

使用您自己的包含resolveJsonModule 标志的 tsconfig.json 自己编译 TypeScript 代码,并且只让 TestCafe 看到生成的 javascript 代码。 TypeScript 的 outDir 标志可能有助于将文件复制到正确的位置。 创建一个接口(可能命名为MyConfig)来描述你的配置内容,并使用let json: MyConfig = require('./config.json'); 导入JSON 文件不如让TypeScript 自己解决问题,但它应该可以解决TestCafe 的限制。李>

【讨论】:

是的,我确实看过这个问题,但错误地认为它已在 2 月修复。我尝试安装“require”npm 包,但在安装过程中不断出现以下错误code ELOCKVERIFY npm ERR! Errors were found in your package-lock.json, run npm install to fix them. npm ERR! Invalid: lock file's typescript@3.3.3 does not satisfy typescript@^3.4.1貌似 Testcafe 的 typescript 和 npm 版本冲突? 尝试删除您的package-lock.json 并运行npm i -D testcafe typescript 向你致敬,安德烈!! 这解决了我的问题,我可以使用 require - var config = require('./config.json'); 来使用 config.json 文件。我必须在我的 tsconfig.json 中设置属性 "moduleResolution": "node" 并运行 npm 命令,因为抛出以下 TypeScript 错误:Cannot find name 'require'. Do you need to install type definitions for node? Try npm i @types/node` 和然后将 node 添加到 tsconfig 中的 types 字段`

以上是关于导入 config.json 文件时打字稿总是出错的主要内容,如果未能解决你的问题,请参考以下文章

打字稿文件中的Nodejs加密

在打字稿组件中使用'import * as'会出错 -

数组中的展开操作出错。 TS1005:“,”预期。打字稿

如何将声音文件导入反应打字稿组件?

如何在打字稿中导入js文件作为模块

使用打字稿配置本机反应时出错