2016-10-03 105 views
1

我已將我的離子應用程序從beta 11更新爲rc0。所以這意味着我已經從angular2 rc4切換到了angular2 stable,從typescript 1.8到2以及使用rollupjs模塊捆綁器。Firebase ionic2-rc0和彙總 - 「彙總:強烈建議使用`eval`」

我照着這篇博客配置AngularFire2: Getting Started with Ionic 2 RC0, Firebase 3 + AngularFire 2

我不能編譯,收到此錯誤:

rollup: Use ofeval(in c:\XXX\node_modules\angularfire2\node_modules\firebase\firebase.js) is strongly discouraged, as it poses security risks and may cause issues with minification. See https://github.com/rollup/rollup/wiki/Troubleshooting#avoiding-eval for more details

任何人都知道這是怎麼回事,如何解決呢?

回答

1

長期的解決方案是火力地堡從他們的代碼中刪除直接eval,因爲它實際上不是必要在這裏(它只是被用來解析JSON。JSON.parse的速度要快得多,並且支持基本上是一個不是問題的問題,這些天)。

在此期間,可能(雖然哈克)解決方法可能是該eval轉換成間接eval(見troubleshooting note理解上的差異),用rollup-plugin-replace

// rollup.config.js 
import nodeResolve from 'rollup-plugin-node-resolve'; 
import commonjs from 'rollup-plugin-commonjs'; 
import replace from 'rollup-plugin-replace'; 
// ...etc 

export default { 
    // ...other config... 
    plugins: [ 
    nodeResolve({...}), 
    commonjs({...}), 
    replace({ 
     include: 'node_modules/firebase/firebase.js', 
     values: { 
     'eval(' : '[eval][0](' 
     } 
    }) 
    ] 
}; 
+0

謝謝您的回覆。我想我在其他地方有更嚴重的錯誤,這就是爲什麼我無法編譯。 我認爲使用eval不是一個突破錯誤,所以我會保持原樣。 再次感謝, – Dee

2

您可以禁用此彙總配置中的警告:

// rollup.config.js 

export default { 
    // ...other config... 
    onwarn: function (message) { 
    if (/Use of `eval` \(in .*\/node_modules\/firebase\/.*\) is strongly discouraged/.test(message)) { 
     return; 
    } 
    console.error(message); 
    } 
};