2015-12-27 19 views
6

Tôi đã cố gắng thiết lập một dự án khôi phục bằng cách sử dụng kiểu chữ. Sau khi cố gắng khác nhau tôi đã có thể tạo ra một phiên bản làm việc bằng cách sử dụng "mô-đun: commonjs" trong tsconfig.jsonThiết lập TypeScript cho nút bằng cách sử dụng mô-đun = hệ thống không hoạt động

Tôi muốn sử dụng hệ thống - nhưng tôi đã không thể thiết lập nó với systemjs

boot.ts

import {AppServer} from './app'; 

var _appServer = new AppServer(); 

tsconfig.json

{ 
    "compilerOptions": { 
    "target": "ES5", 
    "module": "commonjs", 
    "moduleResolution": "node", 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": false 
    }, 
    "exclude": [ 
    "node_modules" 
    ] 
} 

app.ts

/// <reference path="typings/restify/restify.d.ts" /> 
import {Server, Response, Request, createServer} from 'restify'; 

export class AppServer { 

    private server: Server; 

    constructor() { 
    this.init(); 
    } 

    init() { 
    this.server = createServer(); 
    this.server.get('/hello/:name', this.respond); 

    this.server.listen(8080,() => { 
     console.log('%s listening at %s', this.server.name, this.server.url); 
    }); 
    } 

    respond(req: Request, res: Response, next: Function) { 
    res.send('hello ' + req.params.name); 
    next(); 
    } 

} 

sử dụng "module": "system" trong tsconfig.json, tôi nhận được kết quả như sau (ngay cả với import System = require('systemjs') trong boot.ts):

➜ server git:(master) ✗ npm run server               

> [email protected] server /Users/maquh/Development/02_Backgular/server 
> node boot.js 

/Users/maquh/Development/02_Backgular/server/boot.js:1 
(function (exports, require, module, __filename, __dirname) { System.register(['./app'], function(exports_1) { 
                  ^

ReferenceError: System is not defined 
    at Object.<anonymous> (/Users/maquh/Development/02_Backgular/server/boot.js:1:63) 
    at Module._compile (module.js:425:26) 
    at Object.Module._extensions..js (module.js:432:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:313:12) 
    at Function.Module.runMain (module.js:457:10) 
    at startup (node.js:138:18) 
    at node.js:974:3 

Transpiled khởi động .js

System.register(['./app'], function(exports_1) { 
    var app_1; 
    var _appServer; 
    return { 
     setters:[ 
      function (app_1_1) { 
       app_1 = app_1_1; 
      }], 
     execute: function() { 
      //System.import('./app.ts'). 
      _appServer = new app_1.AppServer(); 
     } 
    } 
}); 
//# sourceMappingURL=boot.js.map 

UPDATE: Tôi cũng đã cố gắng một phiên bản thay thế của boot.ts

var System = require('systemjs'); 

System.transpiler = 'ts'; 


System.import('./app.js').then(function(m) { 
    console.log(m); 
}, function(err) { 
    console.error(err); 
}); 

những dẫn đến các lỗi sau:

[Error: ENOENT: no such file or directory, open '/Users/markusbellgardt/Development/02_Backgular/server/restify'] 
+1

Chính xác thì vấn đề là gì? Làm thế nào để bạn biết bạn đã không thể? – Pablo

+0

Đã thêm đầu ra của thiết bị đầu cuối – Maquh

+0

bạn đang hiển thị 'boot.ts', dường như dòng này dường như không bị lỗi từ' boot.js'. bạn có thể hiển thị nội dung đĩa (đầu ra được biên dịch) của 'boot.js' không? – Claies

Trả lời

2

Hệ thống sử dụng bộ tải mô-đun ES6 mà nodejs (theo tôi biết) hiện không hỗ trợ, trường hợp sử dụng ban đầu của bạn là đúng nơi bạn đã xuất ra commonjs. Nếu bạn muốn sử dụng độ phân giải mô-đun kiểu ES6 trong nút bạn sẽ cần phải nói với nút làm thế nào để tải nó như:

https://www.npmjs.com/package/es6-module-loader

tôi sử dụng bản sao vào nút tốt nhưng tôi sử dụng commonjs, tôi đã sử dụng system trong trình duyệt trước và nó hoạt động tốt khi bạn có các trình tải mô-đun ES6 có sẵn như SystemJs (JSPM).

Các vấn đề liên quan