我想使用此npm软件包https://github.com/nefe/number-precision,请按照以下步骤操作,但不起作用。
npm install number-precision --save--dep
import NP from 'number-precision'
或require()
在我的JS文件第一行,错误消息将如下所示:
无法定义要求&&导出或
不能在模块外部使用import语句。
<script src="node_modules/number-precision/build/index.iife.js">import NP from 'number-precision </script>
它不会显示任何错误消息,但是在我的js文件中,NP方法仍然不起作用。
<script src="/workout.js"></script>
并放在我的js文件第一行import NP from 'number-
precision'
我明白了:
拒绝从“ http://0.0.0.0:2000/node_modules/number-”执行脚本 precision /',因为其MIME类型('text / html')不可执行,并且是严格的MIME类型 检查已启用。
如何在我的js文件中正确执行此npm软件包?
答案 0 :(得分:2)
要在浏览器中使用导入,执行导入的文件需要
a)包含在type="module"
中:
<script src="./workout.js" type="module"></script>
b)它仅适用于远程script
(即具有src
属性),不适用于嵌入式脚本。
还请注意,您不能在浏览器中从node_modules
速记引用文件,仅在与Node一起运行时才有效。
因此,在exercise.js中,像这样开始:
import 'https://github.com/nefe/number-precision/blob/master/build/index.iife.js';
不幸的是,该库作者似乎没有提供真正的ES6模块版本(I've just opened an issue on that),因此您无法按照页面的建议进行操作并将脚本导入变量NP
。
执行类似上面所示的导入的脚本应该可以为您工作,并在全局名称空间中公开该库。
答案 1 :(得分:0)
如果要使用独立的<script>
标记,请查看iife.js
的内容:
https://github.com/nefe/number-precision/blob/master/build/index.iife.js
var NP = (function (exports) {
'use strict';
// ...
return exports;
}({}));
它将创建一个全局NP
变量,因此无需导入,只需将其放在首位即可。
<script src="./index.iife.js"></script>
(将src
更改为index.iife.js
的正确路径,但是您希望对其进行结构化处理)
如果您想将其与Webpack一起使用,对我来说效果很好。安装软件包后,请在您的入口点import
对其进行包装:
// src/index.js
import NP from 'number-precision'
console.log(NP.round(5, 5));
然后运行Webpack捆绑代码:
npx webpack
,然后将在dist/main.js
(或类似位置)中产生一个可用的捆绑包。然后在您的网站上链接该捆绑软件。