nodemon使用带有打字稿的Express

时间:2020-10-12 08:07:55

标签: node.js angular typescript

我是node的新手-我创建了service.ts,并尝试使用nodemon build

但我收到错误消息

有人可以解决吗?

我的代码:

nodemon.json

{   "ignore": [
    "src/**/*.spec.ts",
    "**/*.test.ts",
    "**/*.spec.ts",
    ".git",
    "node_modules"   ],   "watch": [],   "exec": "ts-node",   "ext": "ts-node" }

pakage json:

  "scripts": {

    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "sprite": "svg-sprite --config src/sprite-config.json src/svg/*.svg",
    "start:ssr": "npm run build:ssr && npm run serve:ssr",
    "dev:ssr": "ng run stroyka:serve-ssr",
    "serve:ssr": "node dist/stroyka/server/main.js",
    "serve:start": "nodemon server.ts",
    "build:ssr": "ng build --prod && ng run stroyka:server:production",
    "prerender": "ng run stroyka:prerender"   },

server.ts

import 'zone.js/dist/zone-node';

import { ngExpressEngine } from '@nguniversal/express-engine'; import
* as express from 'express'; import { join } from 'path';

import { AppServerModule } from './src/main.server'; import { APP_BASE_HREF } from '@angular/common'; import { existsSync } from 'fs'; import { Express } from 'express';

// The Express app is exported so that it can be used by serverless Functions. export function app(): Express {
    const server = express();
    const distFolder = join(process.cwd(), 'dist/stroyka/browser');
    const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' :  'index';

    // Our Universal express-engine (found @  https://github.com/angular/universal/tree/master/modules/express-engine)
    server.engine('html', ngExpressEngine({
        bootstrap: AppServerModule,
    }));

    server.set('view engine', 'html');
    server.set('views', distFolder);

    // Example Express Rest API endpoints
    // server.get('/api/**', (req, res) => { });
    // Serve static files from /browser
    server.get('*.*', express.static(distFolder, {
        maxAge: '1y'
    }));

    // All regular routes use the Universal engine
    server.get('*', (req, res) => {
        res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
    });

    return server; }

function run(): void {
    const port = process.env.PORT || 4000;

    // Start up the Node server
    const server = app();
    server.listen(port, () => {
        console.log(`Node Express server listening on http://localhost:${port}`);
    }); }

// Webpack will replace 'require' with '__webpack_require__' // '__non_webpack_require__' is a proxy to Node 'require' // The below code is to ensure that the server is run only when not requiring the bundle. declare const __non_webpack_require__: NodeRequire; const mainModule = __non_webpack_require__.main; const moduleFilename = mainModule && mainModule.filename || ''; if (moduleFilename ===
__filename || moduleFilename.includes('iisnode')) {
    run(); }

export * from './src/main.server';

错误: S C:\ Users \ amika \ Desktop \ project> npm run serve:start

stroyka@1.13.2服务:启动C:\ Users \ amika \ Desktop \ project nodemon server.ts

[nodemon] 2.0.4 [nodemon]随时重新启动,请输入rs [nodemon]观看路径: [nodemon]观看扩展:ts-node [nodemon]开始ts-node server.ts

C:\ Users \ amika \ Desktop \ project \ node_modules \ ts-node \ src \ index.ts:245 返回新的TSError(diagnosticText,diagnosticCodes) ^ TSError:⨯无法编译TypeScript: src / app / app.server.module.ts:14:14-错误TS1219:对装饰器的实验性支持是一项功能,在将来的版本中可能会更改。在“ tsconfig”或“ jsconfig”中设置“ experimentalDecorators”选项以删除此警告。

14个导出类AppServerModule {} ~~~~~~~~~~~~~~~

at createTSError (C:\Users\amika\Desktop\project\node_modules\ts-node\src\index.ts:245:12)
at reportTSError (C:\Users\amika\Desktop\project\node_modules\ts-node\src\index.ts:249:19)
at getOutput (C:\Users\amika\Desktop\project\node_modules\ts-node\src\index.ts:362:34)
at Object.compile (C:\Users\amika\Desktop\project\node_modules\ts-node\src\index.ts:395:32)
at Module.m._compile (C:\Users\amika\Desktop\project\node_modules\ts-node\src\index.ts:473:43)
at Module._extensions..js (internal/modules/cjs/loader.js:785:10)
at Object.require.extensions.<computed> [as .ts] (C:\Users\amika\Desktop\project\node_modules\ts-node\src\index.ts:476:12)
at Module.load (internal/modules/cjs/loader.js:641:32)
at Function.Module._load (internal/modules/cjs/loader.js:556:12)
at Module.require (internal/modules/cjs/loader.js:681:19)

[nodemon]应用程序崩溃-等待文件更改,然后再开始...

1 个答案:

答案 0 :(得分:0)

您正尝试直接使用node启动打字稿应用程序。您应该改用ts-node软件包。运行以下命令进行安装:

npm install --save-dev ts-node

然后在您的package.json脚本部分中,将nodemon server.ts更改为:

nodemon --exec ts-node server.js