Angula2 / Node js - 需要app目录之外的模块

时间:2016-07-21 22:28:35

标签: node.js express typescript angular

我尝试从js文件和组件中导入模块,但它失败并出现以下错误:语法错误:意外的标记<(...)

我的解决方案结构(您还可以在github上查看我的测试example

>/
>/model
>  testModel.js
>/public
>  /app
>    app.component.ts
>    main.ts
>app.js
>package.json

这在app.component.ts中失败

var test = require("../../testModel");

testModel.js

    /// <reference path="../typings/globals/node/index.d.ts" />
    (function () {
        module.exports.config = "testing config";

     })();

但是,如果我将/ model目录移动到/ app目录,它可以工作。所以底线,我无法导入任何不属于/ app目录的模块,除了Angular 2等等。

我的app.js

var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes.index);

的index.html

 System.config({
            packages: { 'app': { defaultExtension: 'js' }           
            }
        });
        System.import('app/main')
                .then(null, console.error.bind(console));

1 个答案:

答案 0 :(得分:0)

当您在应用根目录中保留$example = $test->first(); if ($example) { ... 时,它不起作用的原因是因为您没有将其作为静态资产提供。

如果您希望将其保留在/models目录中,则需要将其作为静态资源添加到快速应用中。

在您的路线与其他中间件

之前添加以下行

/public