web-dev-qa-db-fra.com

define n'est pas défini dans l'application nodejs TypeScript

Je travaille sur l'application nodejs dans TypeScript dans laquelle j'ai écrit un fichier server.js comme suit:

import express = require('express');
import mongoose = require('mongoose');


let app=express();
app.set('port', process.env.PORT || 3000); // Set port to 3000 or the provided PORT variable


/**
 * Start app 
 */
app.listen(app.get('port'), function() {
  console.log(`App listening on port ${app.get('port')}!`);
});

j'ai utilisé le gulp pour traspile qui génère un fichier js comme

define(["require", "exports", 'express'], function (require, exports, express) {
    var app = express();
    app.set('port', process.env.PORT || 3000); // Set port to 3000 or the provided PORT variable
    /**
     * Start app
     */
    app.listen(app.get('port'), function () {
        console.log("App listening on port " + app.get('port') + "!");
    });
});

//# sourceMappingURL=../map/server.js.map

mais quand j'exécute ce fichier je reçois une erreur qui n'est pas définie. 

S'il vous plaît corrigez-moi si je fais une erreur.

 enter image description here

8
Rhushikesh

Si vous écrivez une application qui fonctionnera uniquement dans Node.js, vous devriez utiliser des modules "commonjs", et non des modules AMD, lorsque vous compilez vos fichiers TypeScript.

Si vous écrivez une application qui s'exécutera à la fois dans Node.js et dans le navigateur, vous devriez utiliser des modules "umd", et non des modules AMD, lorsque vous compilez vos fichiers TypeScript.

Vous devez donc modifier l'objet de configuration que vous transmettez au compilateur Gulp TypeScript afin qu'il utilise { module: "commonjs" } ou { module: "umd" }.

12
C Snover

Je suppose que vous avez besoin d’un AMD-loader ici, une fois installé, vous pouvez alors require("AMD-loader"); dans votre projet. 

npm install AMD-loader
require("AMD-loader");

Ci-dessous le lien: 

https://github.com/ajaxorg/node-AMD-loader

1
Thalaivar