Google chrome extension 如何导入TypeScript AMD模块而不使依赖代码成为模块

Google chrome extension 如何导入TypeScript AMD模块而不使依赖代码成为模块,google-chrome-extension,requirejs,typescript,amd,Google Chrome Extension,Requirejs,Typescript,Amd,我有一个Chrome扩展内容脚本,它有两个AMD依赖项。当我使用requirejs“require”函数加载依赖项时,脚本工作正常 我将脚本移植到TypeScript和我的项目的其余部分,现在使用 导入依赖项=需要(“依赖项”) 这些模块已经移植到TS,并且在项目的其他部分工作正常 我的问题是,只要我添加一条import语句,TS编译器就想将我的脚本制作成一个模块,并在生成的JS中使用requirejs“define”导入模块。我的chrome扩展对此并不太兴奋,当我运行它时,我得到一个“不匹配

我有一个Chrome扩展内容脚本,它有两个AMD依赖项。当我使用requirejs“require”函数加载依赖项时,脚本工作正常

我将脚本移植到TypeScript和我的项目的其余部分,现在使用

导入依赖项=需要(“依赖项”)

这些模块已经移植到TS,并且在项目的其他部分工作正常

我的问题是,只要我添加一条import语句,TS编译器就想将我的脚本制作成一个模块,并在生成的JS中使用requirejs“define”导入模块。我的chrome扩展对此并不太兴奋,当我运行它时,我得到一个“不匹配的匿名定义”错误


有没有办法让typescript编译器使用require函数来加载我的模块,而不是让我的脚本成为一个模块?我很难找到任何与此相关的信息。

处理此问题的最佳方法是使用
commonjs
标志进行编译,并使用这样一个事实,即如果模块导入未在值位置使用,TypeScript编译器实际上不会发出
require
语句。这类似于页面中记录的“可选模块加载”高级场景

示例代码:

declare var require: any; // If needed
import _a = require('Dependency');
import _b = require('SomeOtherDependency');

var a: typeof _a = require('Dependency');
var b: typeof _b = require('SomeOtherDependency');

// Use 'a' and 'b' in your code. Do not use _a or _b.
a.doSomething();

投票人应该就他们的想法发表评论。这其实是一个很好的问题,答案并不明显。谢谢你的回答。按照我的项目设置方式,我宁愿选择AMD,所以这并不能完全解决我的问题,但肯定是有用的信息。这是一个很短的过程脚本,所以我可能暂时把它作为JS文件,或者最坏的情况是将清单指向加载它的JS文件。这只是一个小的辅助项目,我计划在ES6模块得到支持后切换到ES6模块,所以这不是什么大问题。