为快速

时间:2018-04-26 15:14:52

标签: javascript node.js express mime-types es6-modules

我使用express使用es6模块为js文件提供页面。 关于es6模块 - https://jakearchibald.com/2017/es-modules-in-browsers/

我的server.js文件是 -

const app = express();
app.use( express.static( __dirname + '/src' ));

app.get('*', (req, res) => {
   res.sendFile(path.join(__dirname + '/index.html'));
});
    
app.listen(8080, () => console.log('Listening on port 8080!'));

我的index.html是 -

<html lang="en">
  <body>
    <script type="module" src="./src/test.js"></script>
  </body>
</html>

test.js文件中我正在使用es6模块,因此脚本标记中为type="module"

但是当我在浏览器中提供此html时,test.js脚本未加载。它给出了错误 -

Failed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.

我尝试使用server.js文件中的js文件添加mime类型 -

express.static.mime.define({'application/javascript': ['js']});

但结果仍然相同。我想我需要以某种方式从快递中为js文件发送mime / content-type,但是如何? 请帮忙。

2 个答案:

答案 0 :(得分:1)

它需要一个装载路径。 { - 1}} -

'/src'

不确定为什么。将更新。

答案 1 :(得分:0)

内容类型应由文件扩展名自动确定。

<script type="module" src="./src/test.js"></script>

如果您不想在静态应用中将静态目录挂载到/src,则可能需要从脚本路径中删除/src