gpt4 book ai didi

javascript - Webpack imports-loader with messageformat 和 angular-translate

转载 作者:行者123 更新时间:2023-11-30 00:28:02 25 4
gpt4 key购买 nike

我在使angular-translate-interpolation-messageformatMessageFormatimports-loader 配合使用时遇到了一些困难。我在 this issue 中概述了这个问题.

已复制:


即使模块是使用 UMD 公开的(yay),它实际上使用的是全局 MessageFormat 对象 here .这迫使我要么将 MessageFormat 公开到 window(我不想这样做),要么使用 webpack 进行变通(这也很麻烦)。真正的解决方案是正确使用 UMD,而不是依赖于全局变量,而是正确地要求事物。

这是 UMD 格式现在的样子:

(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module unless amdModuleId is set
define([], function () {
return (factory());
});
} else if (typeof exports === 'object') {
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory();
} else {
factory();
}
}(this, function () {

// interpolation-messageformat code that uses the global MessageFormat variable

}));

它应该是这样的:

(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module unless amdModuleId is set
define(['messageformat'], function (MessageFormat) { // <-- changed line
return (factory(MessageFormat)); // <-- changed line
});
} else if (typeof exports === 'object') {
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory(require('messageformat')); // <-- changed line
} else {
factory(root.MessageFormat); // <-- changed line
}
}(this, function (MessageFormat) { // <-- changed line

// interpolation-messageformat code that uses the global MessageFormat variable

}));

谢谢!


因此,在该问题得到解决之前,我需要采取一种解决方法。我真的更愿意避免使用全局变量。这是我当前使用 imports-loader 的解决方案:

require('imports?MessageFormat=messageformat!angular-translate/dist/angular-translate-interpolation-messageformat/angular-translate-interpolation-messageformat');

有了它,一切都很好,但是,当我打开 Chrome 时,应用程序在运行 angular-translate-interpolation-messageformat 函数时中断,该函数使用 MessageFormatMessageFormat 未定义

这就是事情变得奇怪的地方......

如果我在任何其他浏览器(Chrome 除外)中打开该应用程序,它就可以正常运行。此外,如果我在部署时打开应用程序,它可以正常工作(即使在 Chrome 中)。

这里是事情变得更奇怪的地方......

如果我打开我的 Chrome DevTools,然后然后在 Chrome 中打开本地应用程序,一切正常。 o_O

所以,无论如何,我想知道是不是我没有正确使用 imports-loader 还是其他什么原因。任何帮助表示赞赏!

最佳答案

您是否偶然使用了 devtool: 'eval'?我已经看到你描述的同样奇怪的行为,并且它消失了切换到 devtool: 'source-map'

关于javascript - Webpack imports-loader with messageformat 和 angular-translate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30674230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com