无法在TypeScript中导入NPM软件包(例如Faker)

彼得·J

我目前正在尝试将Faker导入我的项目。

我有一个类似于以下文件:

import * as faker from 'faker';

interface Test {
    FirstName: String,
    LastName: String
}

function create() {
    let account: Test = {
        FirstName: faker.name.firstName(),
        LastName: faker.name.lastName()
    }
}

运行此命令时,出现错误: SyntaxError: Cannot use import statement outside a module

我正在将该文件导入另一个文件,没有任何问题,但是在尝试导入Faker的那一刻,我收到此错误。我已经尝试了一些应解决此问题的解决方案,例如修改tsconfig和package.json以添加type: modules或更改tsconfig中libtarget,但是没有运气。

我应该注意到这适用于硬编码的值,但是我需要使用faker。

编辑:刚才提到我已经尝试const/var faker = require('faker');以及import faker = require('faker')

杰扎克

这是一个有效的例子

您还必须安装该@types/faker软件包以获取类型定义。

import React, { Component } from 'react';
import { render } from 'react-dom';
import Hello from './Hello';
import './style.css';

import faker from 'faker';

interface AppProps { }
interface AppState {
  name: string;
}

class App extends Component<AppProps, AppState> {
  constructor(props) {
    super(props);
    this.state = {
      name: faker.name.firstName()
    };
  }

  render() {
    return (
      <div>
        <Hello name={this.state.name} />

      </div>
    );
  }
}

render(<App />, document.getElementById('root'));

这是 tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react"
  },
  "include": [
    "src"
  ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章