SystemJS 与 Typescript 冲突?
SystemJS with Typescript conflict?
我正在尝试为现有的 AngularJS + Typescript 应用程序配置 SystemJS。
我在加载模块时遇到问题:
当我使用这种语法时:
import module1 from './path-to-module1'
TS 编译器很满意,但 SystemJS 找不到此模块。经过一番调查后,我在 SystemJS 文档中发现 this:
System.defaultJSExtensions = true;
// requests ./some/module.js instead
System.import('./some/module');
太棒了,现在 TS 编译器和 SystemJS 都可以工作了。但是,SystemJS 文档说:
Note that this is a compatibility property for transitioning to using explicit extensions and will be deprecated in future.
所以,我发现我应该为我的模块加载添加一个 .js
扩展,就像这样(删除 'defaultJSExtensions = true' 标志):
import module1 from './path-to-module1.js'
现在 SystemJS 知道如何加载我的模块,TS 编译器说:
Cannot find module './path-to-module1.js'
我怎样才能让 TS 解决这个问题?我应该手动将所有模块添加到 *.d.ts
文件吗?怎么样?
10 倍!
编辑
我找到了this post,我想这应该是我需要做的。我在我的 Grunt 文件中找到了这个:
typescript: {
build: {
src: ...,
outDir: '...',
reference: 'reference.ts',
options: {
target: 'es5',
sourceMap: false,
declaration: false,
removeComments: false,
experimentalDecorators: true,
module: 'commonjs'
}
}
}
但是,将 commonjs
更改为 system
并没有帮助 hree..
别担心,SystemJS 文档有点误导...一旦他们删除了 defaultJSExtension,您只需将代码目录标记为包(在 systemJS 配置中)您可以阅读它here
无论如何,没有扩展名的文件名是一个有效的 ES6 模块import syntax,所以 SystemJS 必须支持它,正如我所说的,他们将在配置中使用不同的方式支持它。
我正在尝试为现有的 AngularJS + Typescript 应用程序配置 SystemJS。
我在加载模块时遇到问题: 当我使用这种语法时:
import module1 from './path-to-module1'
TS 编译器很满意,但 SystemJS 找不到此模块。经过一番调查后,我在 SystemJS 文档中发现 this:
System.defaultJSExtensions = true;
// requests ./some/module.js instead
System.import('./some/module');
太棒了,现在 TS 编译器和 SystemJS 都可以工作了。但是,SystemJS 文档说:
Note that this is a compatibility property for transitioning to using explicit extensions and will be deprecated in future.
所以,我发现我应该为我的模块加载添加一个 .js
扩展,就像这样(删除 'defaultJSExtensions = true' 标志):
import module1 from './path-to-module1.js'
现在 SystemJS 知道如何加载我的模块,TS 编译器说:
Cannot find module './path-to-module1.js'
我怎样才能让 TS 解决这个问题?我应该手动将所有模块添加到 *.d.ts
文件吗?怎么样?
10 倍!
编辑
我找到了this post,我想这应该是我需要做的。我在我的 Grunt 文件中找到了这个:
typescript: {
build: {
src: ...,
outDir: '...',
reference: 'reference.ts',
options: {
target: 'es5',
sourceMap: false,
declaration: false,
removeComments: false,
experimentalDecorators: true,
module: 'commonjs'
}
}
}
但是,将 commonjs
更改为 system
并没有帮助 hree..
别担心,SystemJS 文档有点误导...一旦他们删除了 defaultJSExtension,您只需将代码目录标记为包(在 systemJS 配置中)您可以阅读它here
无论如何,没有扩展名的文件名是一个有效的 ES6 模块import syntax,所以 SystemJS 必须支持它,正如我所说的,他们将在配置中使用不同的方式支持它。