使用typescript在Node js中导入类

时间:2018-10-29 15:52:34

标签: node.js typescript

我将在nodejs中导入类,并在app.ts中使用它

var nano = require("nano");
import { EnvConfig } from './envConfig.service';
let config = new EnvConfig();
const dbCredentials: any = config.appEnv.getServiceCreds('dataservices');
export const nanodb = nano({
  url: dbCredentials.url,
});
export const nanodbCockpitLight = nanodb.use('data');
console.log(dbCredentials);

当我尝试编译时,出现此错误。

import { EnvConfig } from './envConfig.service';
       ^
SyntaxError: Unexpected token {

我已经创建了tsconfig文件:

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "allowSyntheticDefaultImports": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
    "sourceMap": true,
    "allowJs": true,
    "outDir": "./dist",
    //"baseUrl": "src" // Attention !! nécessite l'utilisation d'un loader de module node pour fonctionner sur node
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}

我收到此警告

  

在配置文件'c:/Users/EHHD05911.COMMUN/Documents/cockpitLight/DB mananger / tsconfig.json'中找不到输入。指定的“包含”路径为“ [[src / / ”]],“排除”路径为“ [“ node_modules”,“ / .spec.ts“]'

5 个答案:

答案 0 :(得分:2)

您无法直接运行无法运行的节点app.ts文件 您需要像babel js或typescript编译器tsc这样的编译器,所以首先转换为js文件,然后运行node app.js

答案 1 :(得分:1)

您正在使用.js扩展名,需要.ts扩展名,例如:app.ts而不是app.js

确保在npm global或dev依赖项中都有打字稿。

答案 2 :(得分:1)

我怀疑您要导入的任何内容都具有打字稿语法(强类型输入等),因此直接运行node是行不通的。您需要先运行tsc,这会将所有内容转换为dist文件夹中的javascript,然后运行node dist/app.js

这有点麻烦,这就是为什么有ts-node的原因。听起来确实像是打字稿的节点REPL。您应该可以运行ts-node src/app.ts

答案 3 :(得分:-1)

import { something }是一种打字机语法,在.js文件中不起作用。那是另一种语言。尝试改用require

答案 4 :(得分:-1)

使用babel js是一种工具链,主要用于在当前和较旧的浏览器或环境中将ECMAScript 2015+代码转换为JavaScript的向后兼容版本。

package.json

"dependencies": {
"@babel/polyfill": "^7.0.0",
}

"babel": {
"presets": [
  "@babel/preset-env"
]

},

"scripts": {
    "start": "server.js --exec babel-node",
}

https://babeljs.io/docs

这将启用/解析您的导入语句。