以下是我的示例文件:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script src="t1.js"></script>
</head>
<body></body>
</html>
t1.js:
import Test from 't2.js';
t2.js:
export const Test = console.log("Hello world");
当我在Firefox46中加载页面时,它返回"SyntaxError:导入声明可能只出现在模块的顶层“--但我不确定导入语句在这里还能达到多少顶层。这个错误是不是在转移注意力,是否还不支持导入/导出?
发布于 2020-02-15 19:42:39
导入文件时使用.js文件扩展名解决了同样的问题(别忘了在脚本标签中设置type="module
)。
简单地写下:
import foo from 'foo.js';
而不是
import foo from 'foo';
发布于 2020-09-27 22:49:48
在导入和导出模块的脚本上添加type=module
可以解决此问题。
发布于 2020-04-19 18:30:53
为了争论..。
可以向全局窗口对象添加自定义模块接口。不过,不推荐这样做。另一方面,DOM已经损坏,什么也不能保留。我一直使用它来交叉加载动态模块和订阅自定义侦听器。这可能不是一个答案--但它是有效的。堆栈溢出现在有一个module.export,它调用一个名为'Spork‘的事件-至少在刷新之前...
// spam the global window with a custom method with a private get/set-interface and error handler...
window.modules = function(){
window.exports = {
get(modName) {
return window.exports[modName] ? window.exports[modName] : new Error(`ERRMODGLOBALNOTFOUND [${modName}]`)
},
set(type, modDeclaration){
window.exports[type] = window.exports[type] || []
window.exports[type].push(modDeclaration)
}
}
}
// Call the method
window.modules()
// assign a custom type and function
window.exports.set('Spork', () => console.log('SporkSporSpork!!!'))
// Give your export a ridiculous event subscription chain type...
const foofaalala = window.exports.get('Spork')
// Iterate and call (for a mock-event chain)
foofaalala.forEach(m => m.apply(this))
// Show and tell...
window
https://stackoverflow.com/questions/37624819
复制相似问题