地址信息语法错误Node.js(Express)



我正在使用TypeScript制作一个服务器,我的angular应用程序可以连接到该服务器,但当我尝试运行它时,我遇到了以下错误:(PS我尝试使用AddressInfo的析构函数,但Node.js或TS还不兼容ES6功能(

const {address, port} = server.address() as AddressInfo;
^^
SyntaxError: Unexpected identifier
at Module._compile (internal/modules/cjs/loader.js:720:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:643:32)
at Function.Module._load (internal/modules/cjs/loader.js:556:12)
at Function.Module.runMain (internal/modules/cjs/loader.js:839:10)
at internal/main/run_main_module.js:17:11 

下面的代码:

const express = require('express');
const AddressInfo = require('AddressInfo');
const app = express();
app.get('/', (req, res) => res.send('Hello from Express'));
app.get('/products', (req, res) => res.send('Got a request for products'));
app.get('/reviews', (req, res) => res.send('Got a request for reviews'));
const server = app.listen(8000, "localhost", () => {
const {address, port} = server.address() as AddressInfo;
console.log(`Listening on ${address}:${port}`);
});

as关键字不是普通JavaScript,它是TypeScript,Node.js也运行JavaScript,如果你需要使用TypeScript,你可以使用节点TypeScript包,它允许你将.ts文件转换为.js或使用babel

我正在使用TypeScript 制作服务器

更准确地说,您正在使用NodeJS制作服务器。Node仅本机支持JavaScript。这里的快速解决方案是删除as AddressInfo,因为这是TypeScript语法,而不是JavaScript。

如果你真的想使用TypeScript而不是JavaScript,你需要将.js文件重命名为.ts,并将NodeJS配置为使用TypeScript。

最新更新