Encontrei alguns bugs muito estranhos hoje em um pacote de terceiros ( natural
) com erros como TypeError: Cannot read property 'without' of undefined
. Isso acontece porque importa underscore
assim:
var Tokenizer = require('./tokenizer'),
util = require("util"),
_ = require('underscore')._;
Parece que a versão mais recente exporta todo o shebang como uma exportação padrão, não como um valor nomeado nas exportações. Isso provavelmente está bem... exceto para qualquer pacote que faça o acima.
Talvez _
ainda deva ser exposto como um alias para a exportação padrão? Alterar algo tão importante quanto a API de nível superior parece uma grande mudança (não uma mudança _menor_ semver!), e afinal underscore
é usado como uma dependência por muitos pacotes por aí.
Mesmo problema aqui .. parece que _
está sendo exportado como undefined
: https://github.com/jashkenas/underscore/issues/2835
Ping @jgonggrijp — parece que precisaremos de um acompanhamento do patch 1.10.2.
Especificamente, acho que foi a remoção do antigo código shim da API Node anterior que causou o problema, aqui: https://github.com/jashkenas/underscore/compare/1.9.2...1.10.0# diff -0f36b362a0b81d6f4d4bfd8a7413c75dL45-L60
... @jgonggrijp — você acha que haveria um problema em adicionar algo assim de volta?
Isso é definitivamente um descuido, desculpe por isso.
@jashkenas seu link parece não funcionar, então não consigo ver o que você quer dizer. Talvez algo assim no index-default
?
var _ = mixin(allExports);
_._ = _;
export default _;
var _ = mixin(allExports); _._ = _; export default _;
Isso é exatamente o que eu estava fazendo! Super.
Isso deve ser corrigido agora na versão 1.10.2, que eu empurrei para o NPM. Por favor, tente isso e me avise se tudo voltou ao normal. Desculpas pela bagunça.
@jashkenas seu DEUS! :anjo: Obrigado!
Excelente. Nesse caso, corrigido em https://github.com/jashkenas/underscore/commit/2a932470303157072015d5ab7f26d40b9deb4634.