te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - How to include a npm package in an HTML file? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to include a npm package in an HTML file? - Stack Overflow

programmeradmin3浏览0评论

My HTML file:

<!DOCTYPE html>
<head>
    ...
</head>
<body>
    ...
    <script src="script.js"></script>
</body>

My JavaScript file - script.js:

import * as FilePond from 'filepond';

const myPond = FilePond.create({
    multiple: false,
    name: 'filepond'
});

document.body.appendChild(pond.element);

But error occurred, the browser said:

Uncaught SyntaxError: Cannot use import statement outside a module

So I edited the script.js into this:

const FilePon = require('filepond')

const myPond = FilePond.create({
    multiple: false,
    name: 'filepond'
});

document.body.appendChild(pond.element);

But error occurred again, the browser said:

Uncaught ReferenceError: require is not defined at script.js:1

How can I fix it?

My HTML file:

<!DOCTYPE html>
<head>
    ...
</head>
<body>
    ...
    <script src="script.js"></script>
</body>

My JavaScript file - script.js:

import * as FilePond from 'filepond';

const myPond = FilePond.create({
    multiple: false,
    name: 'filepond'
});

document.body.appendChild(pond.element);

But error occurred, the browser said:

Uncaught SyntaxError: Cannot use import statement outside a module

So I edited the script.js into this:

const FilePon = require('filepond')

const myPond = FilePond.create({
    multiple: false,
    name: 'filepond'
});

document.body.appendChild(pond.element);

But error occurred again, the browser said:

Uncaught ReferenceError: require is not defined at script.js:1

How can I fix it?

Share Improve this question edited May 12, 2020 at 13:52 palaѕн 73.9k17 gold badges122 silver badges139 bronze badges asked May 12, 2020 at 13:50 Mr. WillMr. Will 1431 gold badge2 silver badges9 bronze badges 4
  • stackoverflow./a/19059825/5064324 Does this answer help? – Eggcellentos Commented May 12, 2020 at 13:52
  • You can use import from ES6 but You need to convert the js files to browser supportable javascript. You need babel to transpile you JS – Satyam Pathak Commented May 12, 2020 at 13:52
  • require() is used with Node.js – MARSHMALLOW Commented May 12, 2020 at 13:52
  • Try to change <script src="script.js"></script> to <script type="module" src="script.js"></script> – MARSHMALLOW Commented May 12, 2020 at 13:53
Add a ment  | 

3 Answers 3

Reset to default 6

Actually, require() is for Node.js. You can't use it in browsers.

First solution:

Add the type="module" attribute to the <script> tag.
So it will be <script type="module" src="script.js"></script>

Second solution:

Just add <script src="https://cdn.jsdelivr/npm/[email protected]/dist/filepond.js"></script> and <link href="https://unpkg./filepond/dist/filepond.css" rel="stylesheet"> before calling script.js

I think this will work for you:

<script src="https://cdn.jsdelivr/npm/[email protected]/dist/filepond.js"></script>
<link href="https://unpkg./filepond/dist/filepond.css" rel="stylesheet">
<script>
const myPond = FilePond.create({
    multiple: false,
    name: 'filepond'
});

document.body.appendChild(pond.element);
</script>

require() is a NodeJS function, not a browser JS function. If the package uses npm, chances are its made for NodeJS and not browser JS.

If you want to include js files in the browser, you need to use html includes:

<script src="script.js"></script>

Or a templating solution which allows to include other files such as EJS

It's simple:

  1. Just include the FilePond css & js file from CDN instead like:

    <link href="https://unpkg./filepond/dist/filepond.css" rel="stylesheet">
    <script src="https://unpkg./filepond/dist/filepond.js"></script>
    
  2. Next, you do not need any import or require. You can simply use the rest of the code as FilePond is globaly declared now like:

const myPond = FilePond.create({
  multiple: false,
  name: 'filepond'
});

document.body.appendChild(myPond.element);
<link href="https://unpkg./filepond/dist/filepond.css" rel="stylesheet">
<script src="https://unpkg./filepond/dist/filepond.js"></script>

发布评论

评论列表(0)

  1. 暂无评论