相关疑难解决方法(0)

导入json文件时,Typescript编译器错误

所以代码很简单:

calls.json

{"SERVER":{
    "requests":{
      "one":"1"
    }
} }
Run Code Online (Sandbox Code Playgroud)

file.ts

import json = require('../static/calls.json');
console.log(json.SERVER);
Run Code Online (Sandbox Code Playgroud)

生成的javascript是正确的,当运行节点js服务器时,控制台日志json.SERVER打印出'{requests:{one:'1'}}',就像它应该的那样.

但是,打字稿编译器(commonjs),不知何故并不特别喜欢这种情况并抛出:"找不到模块'../static/calls.json'".

当然我试着写一个.d.ts文件,像这样:

declare module '../static/calls.json'{
    var exp:any;
    export = exp;
}
Run Code Online (Sandbox Code Playgroud)

这显然会抛出:"Ambient模块声明不能指定相对模块名称".

我也尝试了不同的变体,例如:

declare module 'calls.json' {
    import * as json from '/private/static/calls.json';
    export = json;
}
Run Code Online (Sandbox Code Playgroud)

然后要求:

import json = require('calls.json');
Run Code Online (Sandbox Code Playgroud)

没有正常工作,并有自己的小编译器错误:)

我想使用外部.json文件,因为我使用commonjs serverside和amd clientside,我想要一个文件来加载常量.

javascript json commonjs node.js typescript

52
推荐指数
4
解决办法
5万
查看次数

将 JSON 作为类型导入

如何定义导入的 json 的类型?例如

{
  "things": "foo"
}
Run Code Online (Sandbox Code Playgroud)
interface Data {
  things: String,
  another?: String
}
Run Code Online (Sandbox Code Playgroud)
import data from './data.json' // Should have type Data
console.log(data.things)
console.log(data.another) // Should be allowed but undefined
Run Code Online (Sandbox Code Playgroud)

resolveJsonModule选项将自动为导入的 JSON 生成类型,但它是不完整的,因为 JSON 可能不包含数据的所有可能字段。

我自己如何定义类型?

typescript

25
推荐指数
1
解决办法
2万
查看次数

需要一个 json 文件导致错误:找不到模块

checkJs启用了 VsCode 的 nodej 项目中,当需要 json 文件时,例如

const myFile = require('./my-file.json')
Run Code Online (Sandbox Code Playgroud)

这会导致错误[ts] Cannot find module

如何消除错误警告?

我试过了:

  1. 添加"resolveJsonModule": truecompilerOptionsin jsconfig.json,但它不起作用。

  2. 创建一个typing.d.ts包含以下内容的文件:

    declare module '*.json' { const value: any; export default value; } 但是现在出现了一个错误 [ts] Type 'typeof import("*.json")' must have a '[Symbol.iterator]()' method that returns an iterator. [2488]

javascript json visual-studio-code checkjs

18
推荐指数
2
解决办法
2万
查看次数

错误:不应导入命名的导出“版本”(导入为“版本”)

我有一个弹出的 create-react-app 项目。将其更新到 webpack 5 后,我收到此错误。它在 webpack v4.41.5 上运行良好

node v10.23.0 操作系统:MacOS Catalina 10.15.7

错误:不应从默认导出模块导入命名的导出“版本”(导入为“版本”)(仅默认导出很快可用)

我正在使用以下 webpack 配置:

{ mode: 'production',
  bail: true,
  devtool: 'source-map',
  entry:
   [ '/Users/Homeoffice/Documents/toolbox-frontend-clone2/src/index.js' ],
  output:
   { path: '/Users/Homeoffice/Documents/toolbox-frontend-clone2/build',
     pathinfo: false,
     filename: 'static/js/[name].[contenthash:8].js',
     chunkFilename: 'static/js/[name].[contenthash:8].chunk.js',
     publicPath: '/',
     devtoolModuleFilenameTemplate: [Function],
     globalObject: 'this' },
  optimization:
   { minimize: false,
     minimizer: [ [TerserPlugin], [OptimizeCssAssetsWebpackPlugin] ],
     splitChunks: { chunks: 'all', name: false },
     runtimeChunk: { name: [Function: name] } },
  resolve:
   { modules:
      [ 'node_modules',
        '/Users/Homeoffice/Documents/toolbox-frontend-clone2/node_modules' ],
     extensions:
      [ '.web.mjs', '.mjs', …
Run Code Online (Sandbox Code Playgroud)

webpack webpack-5

18
推荐指数
6
解决办法
9629
查看次数

在Angular 7项目中导入JSON

在我的Angular项目中,我正在为我自己的小本地化服务导入JSON文件.我正在使用此处建议的方法,将我更新typings.d.ts

declare module "*.json" {
    const value: any;
    export default value;
}
Run Code Online (Sandbox Code Playgroud)

这适用于Angular 6,但在更新到Angular 7后,当我尝试访问属性时,我的导入似乎未定义.

import * as de from './strings/de.json';
import * as en from './strings/en.json';

var s = en["mykey"]
Run Code Online (Sandbox Code Playgroud)

JSON有一个非常简单的key => value结构:

{
  "myKey": "My Headline",
  …
}
Run Code Online (Sandbox Code Playgroud)

6.1和7之间有什么变化可能会导致这种行为?

json angular angular7

10
推荐指数
3
解决办法
1万
查看次数

“resolveJsonModule”的目的?

我引用的设置显示在下面的代码片段中

{
  "compilerOptions": {
    "resolveJsonModule": true,
  }
}

Run Code Online (Sandbox Code Playgroud)

我不太明白为什么 TS 语言工程师会为 ? 添加一个标志"resolveJsonModule"?环境支持通过import语句(或require()方法)将 JSON 解析为模块,或者环境不支持。为什么要费心额外的复杂性呢?


json typescript tsconfig

10
推荐指数
1
解决办法
1万
查看次数

如何使用 VueJS/Typescript 导入 JSON 文件?

我刚刚创建了一个干净的 VueJS 新项目,但无法加载 JSON 文件。

复制/发行

为了便于复制,我用我的问题创建了一个 Github 存储库:https : //github.com/devedse/VueJSImportJsonFile

在 Home.vue 页面中,我试图让 Json 加载工作。( https://github.com/devedse/VueJSImportJsonFile/blob/master/src/views/Home.vue )

当您在 VSCode 中打开此解决方案时,以下行显示错误:

import theJson from '@/assets/hi.json';
Run Code Online (Sandbox Code Playgroud)

VSCode 中的错误 Can't find module '@/assets/hi.json'

运行 NPM Serve 时弹出以下错误: 在此处输入图片说明

我已经尝试过的

我已经搜索了所有 stackoverflow 并尝试了以下帖子中的所有内容:

在 TypeScript 中导入 json 文件

导入json文件时打字稿编译器错误

https://github.com/chybie/ts-json

编辑1:

好的,我现在设法npm run serve通过将其添加到 tsconfig.json来使其在运行时正常工作:

{
  "compilerOptions": {
    "resolveJsonModule": true
  }
}
Run Code Online (Sandbox Code Playgroud)

然而 VSCode 中的错误似乎仍然存在。有没有办法解决这个问题?

javascript typescript vue.js

9
推荐指数
1
解决办法
4874
查看次数

在 typescript 中读取本地 JSON 文件

如何将本地存储的 JSON 文件读取到打字稿中的变量中?我有一个 json 照片文件,如下所示:

[
    {
      "id": 1,
      "camera": "",
      "location": "",
      "iso": 0,
      "aperture": 0,
      "focal length": 0
    },
    {
      "id": 2,
      "camera": "",
      "location": "",
      "iso": 0,
      "aperture": 0,
      "focal length": 0
    },
    {
      "id": 3,
      "camera": "",
      "location": "",
      "iso": 0,
      "aperture": 0,
      "focal length": 0
    }
]
Run Code Online (Sandbox Code Playgroud)

我正在尝试将文件作为文本读取,然后使用,Json.Parse但首先如何将其作为文本读取?我尝试过使用 FileReader.readAsText 但它只接受 blob 对象。我是否需要从文件路径创建 blob 对象,或者是否有更简单的方法来读取本地 JSON 文件?

javascript json typescript reader angular

7
推荐指数
1
解决办法
3万
查看次数

错误 - 不应导入指定的导出

我已将 Angular 项目更新为版本 12.0.5,将 Typescript 版本更新为 4.3.4,但在编译该项目时遇到问题。

目前,我在没有对分支进行更改的情况下收到以下错误:

Should not import the named export 'provinces' (imported as 'data') from default-exporting module (only default export is available soon)
Run Code Online (Sandbox Code Playgroud)

这是import

import { ApiService, Municipality, Province } from '../../services/api.service';
Run Code Online (Sandbox Code Playgroud)

这就是我声明依赖于导入省份的变量的方式:

public provinces: Province[] = [];
  private currentPorvince: Province;
Run Code Online (Sandbox Code Playgroud)

问题是什么?为什么会发生这种情况以及如何解决?

typescript angular angular12

7
推荐指数
2
解决办法
2万
查看次数

如何删除添加到 JSON 的神秘“默认”字段?

我有以下jsondata.json文件:

{
    "name": "John",
    "age": 30,
    "car": "ferrari"
}
Run Code Online (Sandbox Code Playgroud)

在同一目录中,我有一个打字稿文件,main.ts其中我只是congole.log来自jsondata.json

import * as j from './jsondata.json';

console.log(j);
Run Code Online (Sandbox Code Playgroud)

结果令人惊讶:

{
  name: 'John',
  age: 30,
  car: 'ferrari',
  default: { name: 'John', age: 30, car: 'ferrari' }
}
Run Code Online (Sandbox Code Playgroud)

default那个字段是什么?为什么会出现,我该如何摆脱它?


作为参考,这是我的tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "sourceMap": true,
    "outDir": "./out",
    "strict": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "forceConsistentCasingInFileNames": true
  }
}
Run Code Online (Sandbox Code Playgroud)

json typescript

6
推荐指数
1
解决办法
1165
查看次数