所有 CommonJS 模块中都可用的动态 import()

问题描述 投票:0回答:2

当我尝试运行

npm install
时,出现以下错误。错误信息:

taskRepository: Failed to require task module for setTimestamp: require() of ES Module ......\node_modules\dateformat\lib\dateformat.js from .....\setTimestamp.js not 
supported.
Instead change the require of dateformat.js in .....\setTimestamp.js to a dynamic import() which is available in all CommonJS modules.

在 setTimestamp.js 文件中,我们有

const stringReplacer = require("@ui5/builder").processors.stringReplacer;
const df = require("dateformat");

这是一个基于 SAPUI5 的云应用程序,我们有 2 个 package.json 文件。 在根文件夹下:

"version": "1.2.0",
"devDependencies": {
    "@ui5/builder": "^2.11.5",
    "@ui5/cli": "^2.14.10",
    "@wdio/cli": "7.23.0",
    "@wdio/cucumber-framework": "7.23.0",
    "@wdio/junit-reporter": "7.23.0",
    "@wdio/local-runner": "7.23.0",
    "@wdio/selenium-standalone-service": "7.23.0",
    "@wdio/spec-reporter": "7.23.0",
    "chai": "^4.3.6",
    "chromedriver": "^104.0.0",
    "cucumber-html-reporter": "5.5.0",
    "nyc": "^15.1.0",
    "opa-e2e": "^1.0.11",
    "request": "^2.88.2",
    "request-promise": "^4.2.6",
    "shelljs": "^0.8.5",
    "type": "module",
    "wdio-chromedriver-service": "^7.3.2",
    "wdio-cucumber-reporter": "0.0.2",
    "wdio-cucumberjs-json-reporter": "^4.4.3"
},
"resolutions": {
        "terser": ">=5.14.2",
        "markdown-it": ">=12.3.2",
        "marked": ">=4.0.10",
        "shelljs": ">=0.8.5",
        "ejs": ">=3.1.7",
        "node-fetch": ">=2.6.7",
        "got": ">=11.8.5",
        "follow-redirects": ">=1.14.8",
        "minimist": ">=1.2.6"
   }

内一:

"ui5": {
        "dependencies": [
            "ui5-middleware-livereload",
            "ui5-middleware-simpleproxy",
            "ui5-middleware-servestatic",
            "@dwc/ui5-middleware-dwc"
        ]
    },
    "devDependencies": {
        "@dwc/ui5-middleware-dwc": "^1.4.2-20220817085704",
        "@ui5/cli": "^2.14.10",
        "dateformat": "^5.0.3",
        "env-cmd": "^10.1.0",
        "eslint": "^8.22.0",
        "karma": "6.4.0",
        "karma-chrome-launcher": "^3.1.1",
        "karma-coverage": "^2.2.0",
        "karma-junit-reporter": "^2.0.1",
        "karma-qunit": "^4.1.2",
        "karma-sinon": "^1.0.5",
        "karma-ui5": "2.4.0",
        "nyc": "^15.1.0",
        "qunitjs": "^2.4.1",
        "rimraf": "^3.0.2",
        "shelljs": "^0.8.5",
        "start-server-and-test": "^1.14.0",
        "ui5-middleware-livereload": "^0.7.0",
        "ui5-middleware-servestatic": "^0.4.0",
        "ui5-middleware-simpleproxy": "^0.9.1",
        "wdio-chromedriver-service": "7.3.2"
    }, 


 "resolutions": {
        "terser": ">=5.14.2",
        "markdown-it": ">=12.3.2",
        "marked": ">=4.0.10",
        "ua-parser-js": ">=0.7.24",
        "log4js": ">=6.4.0",
        "karma": ">=6.3.16",
        "follow-redirects": ">=1.14.8",
        "minimist": ">=1.2.6"
    }

我尝试使用以下方法解决此问题:

npm i [email protected]

或者,在 package.json 文件中,写入

"type": "module"
等。 参考:将 index.js 的要求更改为动态 import(),该方法在所有 CommonJS 模块中都可用

有人可以帮我解决这个错误吗?任何帮助将不胜感激。 要求:请不要关闭问题。我知道这是重复的问题,但是我找不到任何解决方案,尝试了我找到的东西。谢谢

javascript node.js node-modules
2个回答
1
投票

我遇到了同样的错误,需要

node-fetch
。解决方案是

const fetch = (...args) => import('node-fetch').then(({default: fetch}) => fetch(...args));

0
投票

使用nodemon

  1. 如果未安装请安装nodemon
  2. 在根目录创建nodemon.json文件
  3. nodemon.json 文件应包含一个具有用于环境的变量名称的对象。 (即{“env”:{“enviornment_variable1”:“somevalue”,“environment_varialbe2”:“somevalue”}});
  4. 通过 process.env.environment_variable 使用环境变量。
  5. 确保重新启动服务器
© www.soinside.com 2019 - 2024. All rights reserved.