我读了JavaScript中的进出口声明。然后我尝试使用“import”关键字导入文件中的类。但是,尽管已经阅读了node.js中模块的声明,但在执行node时仍然会出现错误。
My index.ts:
import Server from "./classes/server";
import router from './routes/router';
const server = new Server();
server.app.use('/', router);
server.start(() => {
console.log("server starting!");
})
我的课程/server.ts
import { SERVER_PORT } from './../global/enviroment';
import express from 'express';
class Server {
public app: express.Application;
public port: number;
constructor(){
this.app = express();
this.port = SERVER_PORT;
}
start(callback: any){
this.app.listen(this.port, callback);
}
}
export default Server;
我的package.json
但是当我试着运行npm run start
时。。
5条答案
按热度按时间7ivaypg91#
你的tslog.json怎么样?
我假设您缺少一些配置,这些配置可以将typescript文件编译为node可以运行的兼容JavaScript,下面是一个应该可以工作的tsscript. json示例
因此,基本上您将需要
moduleResolution
到node
https://www.typescriptlang.org/docs/handbook/module-resolution.html另外不要忘记node不运行ts文件,你需要先用tsc编译then。或者,如果您愿意,也可以始终运行
npx ts-node index.ts
编辑:
ts-node它的作用是首先将你的代码从ts编译成js,然后用生成的js运行it node,你可以查看关于ts node https://github.com/TypeStrong/ts-node的更多信息。
如果你不想使用ts-node,你可以先使用
npx tsc
编译,这是typescript的编译器,一旦你有了JavaScript,你可以运行node index.js
或简单的node .
。请注意,您必须使用ts配置上的outDir
检查js文件的输出文件夹,如果outDir
缺少配置,则会将js文件添加到与ts存在https://www.typescriptlang.org/docs/handbook/compiler-options.html相同的位置rxztt3cl2#
如果你想使用
import/export
语法,你有以下选项:esm
npm包使用node原生ES模块:
将此添加到您的包中。json:
并将启动脚本更改为:
"start": "node index.js"
(假设您使用的是node > v13.3.0)。如果您使用的是node v12或更高版本,您可以尝试:node --experimental-modules index.js
使用
esm
包:标签:https://github.com/standard-things/esm
你需要先把
.ts
文件编译成.js
文件。请参阅TypeScript docs了解如何做到这一点。pxq42qpu3#
据我所知,你还不能在node js中使用import语句。但是你可以使用实验特性(.mjs文件)。
This article详细解释了模块/文件导入。
6mzjoqzu4#
我正在使用的ts节点和这为我工作
即使你的文件名是file.ts,使用file.js也可以
wztqucjr5#
关于TS,你唯一需要知道的就是这个简单的事实:
维护TS项目的成本>修复未捕获的TS错误的成本
简单是最好的。