我已自定义next.config(webpack)来构建静态js文件(.next/static/loader.js
)。
原始的loader.js
是IIFE:
(function stickerLoader(){
alert('Hello');
// ... some source code
}())
其用法如下:
<script type="text/javascript" src="/_next/static/loader.js"></script>
但是,以上代码不会立即执行,因为它已编译为:
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["static/loader.js"],{
/***/ "./components/Sticker/loader.js":
/*!**************************************!*\
!*** ./components/Sticker/loader.js ***!
\**************************************/
/*! no static exports found */
/***/ (function(module, exports) {
(function stickerLoader() {
alert('Hello');
// ... some minified source code
})();
/***/ })
},[["./components/Sticker/loader.js","static/runtime/webpack.js"]]]);
Next.js是否有任何设置可以删除
WEBPACK WRAPPER
,并仅保留我的源代码,所以我的预期结果将是:(function stickerLoader() {
alert('Hello');
// ... some minified source code
})();
我的
next.config.js
:module.exports = {
webpack(config, options) {
return merge(config, {
entry() {
return config.entry().then(entry => {
return Object.assign({}, entry, {
'static/loader.js': path.resolve(
__dirname,
'components',
'Sticker',
'loader.js'
)
});
});
}
});
};
};
最佳答案
如果您希望它没有任何webpack内容,为什么要将其添加到webpack版本中?
如果这是一个简单的js文件,请将其作为常规静态js文件放在public/
(或v9.0.5及以下版本的static/
)文件夹中。
关于javascript - 如何通过脚本标记执行/_next/static/xxx.js,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59241915/