Closed zhuozhiyongde closed 8 months ago
即使改变 API,依旧报错:
ReferenceError: GM_xmlhttpRequest is not defined
测试平台:chrome,tampermonkey
你最好先查看文档了解如何正确使用 GM api
而不是直接发 issue
抱歉,可能是我表述的不清楚
是这样的,我在开发 dev 模式下确实无法使用这个 API,无论是现在这种写法还是 GM_xmlHttpRequdst 都不行,但是同样的代码我直接不打包放入一个新的脚本,却能正常工作。这让我感到很迷惑,所以来此提问orz
你好,你确定你是按照文档里的 写法
import { GM_cookie, unsafeWindow, monkeyWindow, GM_addElement } from '$';
这样引入之后仍然报错吗
我使用了 这个写法,仍然报错
这个是换了那个引入写法之后依然报错
麻烦上传一个最小复现的 demo.zip 看看
使用最新的 pnpm create monkey 直接创建然后修改的结果
看起来是你的浏览器扩展的问题
我使用的是最新的 5.1.0 的 TamperMonkey
这个是符合预期的,因为正确的变量名是 GM_xmlhttpRequest
不是 GM_xmlHttpRequest
我不知道为什么脚本作用域的 window 上现在无法动态获取到 GM_api 了,看起来和 https://github.com/Tampermonkey/tampermonkey/issues/1567 相关
你的问题可以通过如下的代码暂时解决
import { defineConfig } from 'vite';
import monkey from 'vite-plugin-monkey';
export default defineConfig({
plugins: [
monkey({
entry: 'src/main.tsx',
userscript: {
icon: 'https://vitejs.dev/logo.svg',
namespace: 'npm/vite-plugin-monkey',
match: ['https://www.google.com/'],
},
format: {
generate(uOptions) {
if (uOptions.mode == 'serve') {
return (
uOptions.userscript +
'\n' +
['unsafeWindow', 'GM', 'GM_xmlhttpRequest'] // your userscript API from window
.map((v) => `unsafeWindow.${v}=${v}`)
.join(';\n')
);
}
return uOptions.userscript;
},
},
}),
],
});
感谢大佬,最新版已经可用。
大佬,解决了没有哇?! 使用最新版了,v3.5.2 用的是Violentmonkey(暴力猴) 输出:[vite-plugin-monkey] mount 0/25 GM_api to unsafeWindow
以上是脚本 main.js 内容,已经开了授权(自动开启的),但是无效。