Ich habe ein Node JS-Projekt in Visual Studio (2012 Professional und 2013 Community) mit NTVS und Verwenden Sie einen Yeoman Generator, um eine Knockout SPA app (mit der Typoskript-Option im Generator-Setup) zu erstellen.Wie kann ich einen Yeoman Generator KO (mit Typescript und Schluck) Knoten JS-Projekt in Visual Studio mit Node JS Tools für Visual Studio
Jetzt muss ich entscheiden, welche Datei als Startup-Datei beim Debuggen (schlagen F5). Ich nehme an, das wäre ./src/app/require.config.js, weil sonst bekomme ich einen Fehler, der erfordert, ist nicht definiert.
Wenn ich mit dem Debuggen beginne, sieht alles gut aus und ein Konsolenfenster erscheint mit der Meldung "Debugger hört auf Port 5858". Aber wenn ich localhost: 5858 starte, gibt es keinen Server/Webseite.
Ich kann die App in einem Server auf einem anderen Port starten, aber dann werden keine Haltepunkte getroffen, nicht einmal in der Startup-Datei. Also meine Fragen sind: - Was soll ich als Startup-Datei einstellen? - Wie kann ich meine App in Visual Studio mit NTVS debuggen?
bearbeiten
Ich habe festgestellt, dass, wenn ich ein neues leeres NTVS Project mit einer server.js Datei erstellt:
var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(port);
diese Einstellung als Startdatei Ergebnisse in funktionierendes Debugging für diese Datei.
Wie kann ich noch require über die require.config.js laden und starte meine App mit startup.ts?
require.config.js
// require.js looks for the following global when initializing
var require = {
baseUrl: ".",
paths: {
"bootstrap": "bower_modules/components-bootstrap/js/bootstrap.min",
"crossroads": "bower_modules/crossroads/dist/crossroads.min",
"hasher": "bower_modules/hasher/dist/js/hasher.min",
"jquery": "bower_modules/jquery/dist/jquery",
"knockout": "bower_modules/knockout/dist/knockout",
"knockout-projections": "bower_modules/knockout-projections/dist/knockout-projections",
"signals": "bower_modules/js-signals/dist/signals.min",
"text": "bower_modules/requirejs-text/text"
},
shim: {
"bootstrap": { deps: ["jquery"] }
}
};
startup.ts
import $ = require("jquery");
import ko = require("knockout");
import bootstrap = require("bootstrap");
import router = require("./router");
// Components can be packaged as AMD modules, such as the following:
ko.components.register('nav-bar', { require: 'components/nav-bar/nav-bar' });
ko.components.register('home-page', { require: 'components/home-page/home' });
// ... or for template-only components, you can just point to a .html file directly:
ko.components.register('about-page', {
template: { require: 'text!components/about-page/about.html' }
});
ko.components.register('grid-page', { require: 'components/grid-page/grid-page' });
// [Scaffolded component registrations will be inserted here. To retain this feature, don't remove this comment.]
// Start the application
ko.applyBindings({ route: router.currentRoute });
Edit 2
bei einer weiteren Untersuchung kann ich meine App mit einem server.js starten Datei als Startdatei mit
var http = require('http');
var app = require('./src/app/startup.js');
var port = process.env.port || 1337;
http.createServer(app).listen(port);
Dies führt jedoch zu dem Fehler 'define is not defined'.
Wir haben versucht, die amdefine-Paket und das löste die "define ist undefined" Fehler, gab uns aber den Fehler "jquery ist undefined" als die requirjs.config.js Datei enthält diese Pfade und wir können ' t scheinen diese zu laden –
sorry, Fehler erhalten ist 'kann Modul' jquery 'nicht finden' ' –
Ich sehe, aber was ich nicht verstehe, ist der Link, den Sie zur Verfügung gestellt. Was hat das mit unserer Situation zu tun (abgesehen vom NodeJS-Teil) –