gpt4 book ai didi

Electron ES6 模块导入

转载 作者:行者123 更新时间:2023-12-04 02:49:18 52 4
gpt4 key购买 nike

Electron 3.0.0-beta.1
节点 10.2.0
Chrome 66.0.3359.181

我遇到的问题是导入模块。我创建了以下协议(protocol):

protocol.registerFileProtocol('client', (request, callback) => {
var url = request.url.substr(8);
callback({path: path.join(__dirname, url)});
});

协议(protocol)的输出是正确的路径
"/Users/adviner/Projects/Client/src/ClientsApp/app.js"

我有以下模块 app.js 和以下代码:
export function square() {
return 'hello';
}

在我的 index.html 中,我像这样导入模块:
    <script type="module" >
import square from 'client://app.js';
console.log(square());
</script>

但我不断收到错误:

app.js/:1 加载模块脚本失败:服务器以非 JavaScript MIME 类型“”响应。根据 HTML 规范对模块脚本强制执行严格的 MIME 类型检查。

我完成了搜索,但似乎找不到解决方案。谁能建议我可以使这项工作的方法?

谢谢

最佳答案

快速解决方案:

const { protocol } = require( 'electron' )
const nfs = require( 'fs' )
const npjoin = require( 'path' ).join
const es6Path = npjoin( __dirname, 'www' )

// <= v4.x
// protocol.registerStandardSchemes( [ 'es6' ] )

// >= v5.x
protocol.registerSchemesAsPrivileged([
{ scheme: 'es6', privileges: { standard: true } }
])

app.on( 'ready', () => {
protocol.registerBufferProtocol( 'es6', ( req, cb ) => {
nfs.readFile(
npjoin( es6Path, req.url.replace( 'es6://', '' ) ),
(e, b) => { cb( { mimeType: 'text/javascript', data: b } ) }
)
})
})
<script type="module" src="es6://main.js"></script>

关于Electron ES6 模块导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51113097/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com