我使用 NTVS 在 Visual Studio(2012 专业版和 2013 社区)中创建了一个 Node JS 项目,并使用Yeoman生成器创建了一个Knockout SPA 应用程序(使用生成器设置中的 typescript 选项)。
现在我需要决定调试时(按 F5)将哪个文件设置为启动文件。我想这将是 ./src/app/require.config.js 因为否则我会收到一个错误,要求未定义。
当我开始调试时,一切看起来都很好,并且会出现一个控制台窗口,并显示消息“调试器正在侦听端口 5858”。但是当我启动 localhost:5858 时,没有服务器/网站。
我可以在另一个端口上的服务器中启动应用程序,但是没有断点被击中,甚至在启动文件中也没有。
所以我的问题是: - 我应该将什么设置为启动文件?- 如何使用 NTVS 在 Visual Studio 中调试我的应用程序?
编辑
我已经确定,当我添加一个新的空 NTVS 项目时,它会创建一个 server.js 文件,其中包含:
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);
将此设置为启动文件会导致此文件的工作调试。
如何仍然通过 require.config.js 加载 require 并使用 startup.ts 启动我的应用程序?
需要.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"] }
}
};
启动.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 });
编辑 2
经过进一步调查,我可以使用 server.js 文件作为启动文件启动我的应用程序,其中包含
var http = require('http');
var app = require('./src/app/startup.js');
var port = process.env.port || 1337;
http.createServer(app).listen(port);
但这会导致“未定义定义”错误。