我将在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“]'
答案 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",
}
这将启用/解析您的导入语句。