我正在使用Angular CLI + Universal,我遇到浏览器变量问题,如window,$ Jquery和google等。
我尝试用这样的webpack解决:
plugins: [
new webpack.DefinePlugin({
window: undefined,
document: undefined,
location: JSON.stringify({
protocol: 'https',
host: 'localhost',
})
}),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery"
})
]
我在我的组件中有例如以下代码:
window.location.reload()
哪个不行。 另外,我在node_modules中使用了window变量。
我该如何解决这个问题?
答案 0 :(得分:0)
这只是对Worksheet.Range
如何运作的误解。它的作用是简单地为你打包这些项目的打包文件,而不是将它们公开为你可以随时从浏览器控制台访问的变量
如果您希望从外部访问这些内容,我建议您在new webpack.ProvidePlugin
或您的输入文件中执行此操作
application.js
执行此操作应该允许您在浏览器的控制台上访问jquery。 至于窗口是从组件内部无法访问的,也许下面的代码与它有关
import jquery from 'jquery'
window.$ = jquery
window.jquery = jquery
window.jQuery = jquery
答案 1 :(得分:0)
这些变量在服务器端不可用。如果要在代码中使用它们,则需要检查当前上下文是浏览器还是服务器:
// import functions
import org.apache.spark.sql.functions.{coalesce, lit}
// we might not need groupBy,
// since after join, all the information will be in the same row
// so instead of using aggregate function, we simply combine the related fields as a new column.
val df = hist2.join(hist1, Seq("article_id", "pos_id"), "left")
.select($"pos_id", $"article_id",
coalesce(hist2("date"), hist1("date")).alias("date"),
(coalesce(hist2("qte"), lit(0)) + coalesce(hist1("qte"), lit(0))).alias("qte"),
(coalesce(hist2("ca"), lit(0)) + coalesce(hist1("ca"), lit(0))).alias("ca"))
.orderBy("pos_id", "article_id")
// df.show()
|pos_id|article_id| date| qte| ca|
+------+----------+----------+----+----+
| 1| 1|2000-01-08| 5.0| 7.0|
| 2| 2|2000-01-08|29.4|24.0|
| 3| 3|2000-01-08| 7.0| 2.4|
| 4| 4|2000-01-08| 3.5| 1.2|
| 5| 5|2000-01-08|14.5| 1.2|
| 6| 6|2000-01-08| 2.0|1.25|
+------+----------+----------+----+----+