我正在玩TypeScript中的环境模块,使用MailApp的一个小玩具示例,这是Google Apps Script (see here)中的全局模块。我正在做的只是在VS代码中编写代码,用webpack编译代码,然后将其作为ES5代码复制到Apps Script控制台中运行。
我的问题:对于下面的代码,当我将环境模块声明移到.d.ts文件并使用triple-slash指令引用它时,TSC和VS代码都是认识到这一点但是,webpack + ts-loader(awesome-typescript-loader有同样的问题)总是显示错误:
Module not found: Error: Can't resolve 'MailApp'
我在这里错过了什么吗?
我的声明文件:root / src / AppsScriptTypes.d.ts
declare module 'MailApp' {
export interface EmailOptions {
bcc?: string;
cc?: string;
htmlBody?: string;
name?: string;
noReply?: boolean;
replyTo?: string;
}
export function sendEmail(
recipient: string,
subject: string,
body: string,
options?: EmailOptions): void;
}
我的主文件:root / src / SendMail.ts
/// <reference path="./AppsScriptTypes.d.ts" />
import * as MailApp from 'MailApp';
MailApp.sendEmail(
'myemail@gmail.com',
'Sample Email Title',
'Sample Email Body', {
noReply: true,
cc: 'myemail@gmail.com',
});
我的root / webpack.config.js:
module.exports = {
entry: './src/SendMail.ts',
output: {
filename: 'bundle.js',
path: __dirname,
},
resolve: {
extensions: ['.ts', '.tsx',],
},
module: {
rules: [
{
loader: 'ts-loader',
test: /\.(t|j)sx?$/,
exclude: /node_modules|MockMailApp\.js/,
}
]
},
};
当我不使用三斜杠引用+单独文件并将声明移动到SendMail.ts文件中时,webpack + ts-loader没有错误,但这当然不是优选的:< / p>
declare module MailApp {
...
} // this works for webpack when shown like this in SendMail.ts
MailApp.sendEmail(...);
...
我错过了某处的配置吗?我使用的是webpack 2.4.1,TypeScript 2.3,ts-loader 2.0.3。谢谢你的帮助!
答案 0 :(得分:0)
我不确定它是否会有所帮助,但您可以尝试以下一个: