如何正确配置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对象?)