我目前正在尝试将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中的lib
和target
,但没有运气。
我应该注意,这适用于硬编码值,但我需要使用fakerr。
编辑:刚才提到我已经尝试过const/var faker = require('faker');
和import faker = require('faker')
答案 0 :(得分:0)
这里是working example。
您还必须安装@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"
]
}
答案 1 :(得分:0)
我遇到了同样的问题,并尝试了上述建议的解决方案,但没有成功。对我有用的是更改tsconfig.json
中的以下行:
//"module": "esnext",
"module": "commonjs",
或者,在命令行中传递它:
ts-node -O '{"module": "commonjs"}' ./server/generate.ts > ./server/database.json
说明[1]:
当前的node.js稳定版本不支持ES模块。此外,ts-node没有进入node.js所需的钩子来支持ES模块。您需要在tsconfig.json中设置“ module”:“ commonjs”,以便代码正常工作。