簡體   English   中英

必須使用 import 來加載 ES Module

[英]Must use import to load ES Module

我正在嘗試創建一個服務,使用svg2img package 將 SVG 轉換為 PNG。我使用vercel dev在本地工作,但是當我嘗試部署到 vercel 時,我總是會收到此錯誤:

2021-09-27T01:11:56.532Z    e3a35069-8a51-4e1d-81b9-110e1b17e2be    ERROR   Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /var/task/api/node_modules/canvg/lib/index.js
require() of ES modules is not supported.
require() of /var/task/api/node_modules/canvg/lib/index.js from /var/task/api/node_modules/svg2img/index.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
Instead rename /var/task/api/node_modules/canvg/lib/index.js to end in .cjs, change the requiring code to use import(), or remove "type": "module" from /var/task/api/node_modules/canvg/package.json.
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1089:13)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12)
    at Module.require (internal/modules/cjs/loader.js:961:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at Object.<anonymous> (/var/task/api/node_modules/svg2img/index.js:1:13)
    at Module._compile (internal/modules/cjs/loader.js:1072:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12) {
  code: 'ERR_REQUIRE_ESM'
}
RequestId: e3a35069-8a51-4e1d-81b9-110e1b17e2be Error: Runtime exited with error: exit status 1
Runtime.ExitError

這是我的代碼的樣子:

import svg2img from 'svg2img';

export default function(req, res) {
  const url = req.query.url;
  const width = req.query.width;
  const height = req.query.height;
  const size = Math.min(width, height);
  svg2img(url, {width: size, height: size, preserveAspectRatio: true},
    function(error, buffer) {
      if (buffer) {
        res.send(buffer);
      }
  });
};

這是 package.json

{
  "name": "svg2png",
  "version": "1.0.0",
  "description": "convert svgs to pngs",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "me",
  "license": "ISC",
  "dependencies": {
    "svg2img": "^0.9.3"
  },
  "type": "module"
}

您可以嘗試將svg2img的版本降低到不使用package.json 3.0.8的版本,該版本在其canvg中使用"type": "module" svg2img使用require('canvg')導致錯誤,因為它試圖在 esm 上下文中使用 commonjs。

看到這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM