我很难让angular-translate-interpolation-messageformat
与imports-loader
的{{1}}相匹配。我在this issue中概述了这个问题。
复制:
即使使用UMD(yay)公开模块,它实际上也在使用全局MessageFormat
对象here。这迫使我将MessageFormat
公开到MessageFormat
(我不想这样做),或者使用webpack进行解决(这也很麻烦)。真正的解决方案是正确使用UMD而不依赖于全局变量,而是需要正确的东西。
以下是UMD格式现在的样子:
window
这是它应该是什么样子:
(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
有了它,一切都很好,但是,当我打开Chrome时,应用程序会在运行使用require('imports?MessageFormat=messageformat!angular-translate/dist/angular-translate-interpolation-messageformat/angular-translate-interpolation-messageformat');
angular-translate-interpolation-messageformat
的{{1}}函数时断开,表示MessageFormat
未定义
这里的事情变得奇怪......
如果我在任何其他浏览器(Chrome除外)中打开应用程序,它就可以了。此外,如果我在部署时打开应用程序,它可以正常工作(即使在Chrome中)。
这里的事情变得怪异了......
如果我打开我的Chrome DevTools并然后在Chrome中打开本地应用,一切正常。 O_O
所以,无论如何,我想知道我是否正在使用MessageFormat
错误或其他东西。任何帮助表示赞赏!
答案 0 :(得分:1)
您是否随时使用devtool: 'eval'
?我已经看到了你描述的同样奇怪的行为,它转而转向devtool: 'source-map'
。