无法从已编译的打字稿中导入带有systemjs的lodash

时间:2017-04-23 11:27:54

标签: typescript lodash systemjs

如何正确配置systemjs以加载外部库? 我创建了一个打字稿应用程序,其中包含一些在客户端/浏览器和服务器/节点之间共享的代码。此代码的一部分导入位于node_modules/lodash的lodash库,这在服务器环境中工作正常,但在客户端中断。

我简化了将lodash加载到

的类
import * as _ from 'lodash';

export class LodashLoadTest {
    public constructor() {
        console.log(_.VERSION);//Outputs correctly in server compiled, but yields undefined in the browser
    }
}

system.js配置文件看起来像

(function (global) {
  System.config({
    // map tells the System loader where to look for things
    map: {
      // our app is within the app folder
      app: '/static/js/build',
      lodash: '/node_modules/lodash/lodash.js'
    },
    // packages tells the System loader how to load when no filename and/or no extension
    packages: {
      app: {
        main: './client/app.js',
        defaultExtension: 'js'
      }
    }
  });
})(this);

服务器和客户端tsconfig.json文件之间的区别如下

客户端:

"target": "ES5",
"module": "system",

服务器:

"target": "es2015",
"module": "commonjs",

浏览器成功请求lodash.js文件,但似乎systemjs加载程序错误地加载了该文件。 (凭借我有限的知识和快速查看chrome devtools,它似乎将它作为模块加载,但我如何告诉/手动将其转换为LodashLoadTest期望的lodash对象?)

0 个答案:

没有答案