在使用foundation new
创建一个全新的Foundation 6应用程序,使用foundation build
构建该应用程序并在Web浏览器中加载该应用程序之后,在开发者控制台上看到以下错误:
Uncaught TypeError: o(...)(...).foundation is not a function
at Module.<anonymous> (app.js:formatted:4175)
at o (app.js:formatted:11)
at Object.<anonymous> (app.js:formatted:4166)
at o (app.js:formatted:11)
at app.js:formatted:71
at app.js:formatted:72
有什么作用?似乎minifier丢失了对jquery的引用,因为该行似乎与生成的app.js
中唯一调用.foundation()
函数的行相关。
版本。浏览器是最新版。
$ foundation -v; npm -v; node -v; webpack -v
Foundation CLI version 2.2.5
6.4.1
v8.11.1
4.26.1
答案 0 :(得分:0)
tldr:使用app.js
变量,例如import $ from 'jquery'
import whatInput from 'what-input'
window.$ = $
import Foundation from 'foundation-sites'
if (Foundation) {
// if `Foundation` is left as an unused variable
// webpack will exclude it from the build output;
// therefore, any expression that uses it will work.
}
$(document).foundation()
devtool: 'eval'
这是我找到答案的方法
进行了一些调整,但是我发现了devtool的正确源映射设置。将gulpfile.babel.js
中的webpackConfig更改为$ gulp build --production
并使用$ foundation build
或foundation
进行生产。您希望在生产中使用评估设置。
浏览器仍然在未定义的Foundation
上引发异常,但是这次您看到应该由谁定义它。
在从"foundation-sites"
引入app.js
的调用之后,用注释标记代码,然后进行构建,然后重新加载浏览器,以下是// app.js comment i added
...
import Foundation from 'foundation-sites' // here, right?
...
// app.js minified
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var what_input__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(4);
/* harmony import */ var what_input__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(what_input__WEBPACK_IMPORTED_MODULE_1__);
window.$ = jquery__WEBPACK_IMPORTED_MODULE_0___default.a;
// here, right?
jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).foundation();
的内容:源映射:
Uncaught TypeError: jquery__WEBPACK_IMPORTED_MODULE_0___default(...)(...).foundation is not a function
现在我们在控制台中看到的错误与最后一行有关:Foundation
console.info(Foundation)
在哪里?我猜想webpack将完全跳过导入Foundation,除非您在入口点代码中实际使用了它。在猜测是这种情况之后,我添加了控制台语句,该语句打印了dplyr
和bingo。突然导入了基金会站点。