相关疑难解决方法(0)

NodeJS“必须使用导入来加载ES模块”

我正在尝试myArrhello.js导入index.js。但是我得到一个错误

Error [ERR_REQUIRE_ESM]: Must use import to load ES Module
Run Code Online (Sandbox Code Playgroud)

你好.js

export let myArr = ['hello', 'hi', 'hey'];
Run Code Online (Sandbox Code Playgroud)

索引.js

import { myArr } from './hello.js';
console.log(myArr);
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

javascript import export node.js

26
推荐指数
5
解决办法
6万
查看次数

导入ES6时出现“未捕获的SyntaxError:无法在模块外部使用import语句”

我正在使用ArcGIS JSAPI 4.12,并希望使用空间幻觉在地图上绘制军事符号。

当我添加milsymbol.js到脚本时,控制台返回错误Uncaught SyntaxError: Cannot use import statement outside a module,因此我添加type="module"到脚本时,它返回Uncaught ReferenceError: ms is not defined

这是我的代码:

<link rel="stylesheet" href="https://js.arcgis.com/4.12/esri/css/main.css">
<script src="https://js.arcgis.com/4.12/"></script>
<script type="module" src="milsymbol-2.0.0/src/milsymbol.js"></script>

<script>
        require([
          "esri/Map",
          "esri/views/MapView",
          "esri/layers/MapImageLayer",
          "esri/layers/FeatureLayer"
        ], function (Map, MapView, MapImageLayer, FeatureLayer) {

            var symbol = new ms.Symbol("SFG-UCI----D", { size: 30 }).asCanvas(3);
            var map = new Map({
                basemap: "topo-vector"
            });

            var view = new MapView({
                container: "viewDiv",
                map: map,
                center: [121, 23],
                zoom: 7 …
Run Code Online (Sandbox Code Playgroud)

javascript arcgis ecmascript-6 arcgis-js-api

24
推荐指数
15
解决办法
7万
查看次数

返回旧的(m,文件名);错误 [ERR_REQUIRE_ESM]:ES 模块的 require()

我正在尝试与 unsplash api 进行集成,但我得到了,

当我尝试通过 ts-node 运行脚本时,如下所示:

ts-node unsplash.ts
Run Code Online (Sandbox Code Playgroud)

有错误:

C:\Users\USER\AppData\Roaming\npm\node_modules\ts-node\dist\index.js:729
            return old(m, filename);
                   ^
Error [ERR_REQUIRE_ESM]: require() of ES Module C:\Users\USER\Desktop\tindin\node_modules\node-fetch\src\index.js from C:\Users\USER\Desktop\tindin\src\api\services\unsplash.ts not supported.
Instead change the require of index.js in C:\Users\USER\Desktop\tindin\src\api\services\unsplash.ts to a dynamic import() which is available in all CommonJS modules.
    at Object.require.extensions.<computed> [as .js] (C:\Users\USER\AppData\Roaming\npm\node_modules\ts-node\dist\index.js:729:20)
    at Object.<anonymous> (C:\Users\USER\Desktop\tindin\src\api\services\unsplash.ts:23:30)
    at Module.m._compile (C:\Users\USER\AppData\Roaming\npm\node_modules\ts-node\dist\index.js:735:29)
    at Object.require.extensions.<computed> [as .ts] (C:\Users\USER\AppData\Roaming\npm\node_modules\ts-node\dist\index.js:737:16)
    at main (C:\Users\USER\AppData\Roaming\npm\node_modules\ts-node\dist\bin.js:238:16)
    at Object.<anonymous> (C:\Users\USER\AppData\Roaming\npm\node_modules\ts-node\dist\bin.js:351:5) {
  code: 'ERR_REQUIRE_ESM'
}
Run Code Online (Sandbox Code Playgroud)

我的代码

import { createApi } from 'unsplash-js';
import * …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript

21
推荐指数
1
解决办法
2万
查看次数

要加载 ES 模块,请在 package.json 中设置 "type": "module" 或使用 .mjs 扩展名

我试图在桌面上运行这个存储库一个 vscode 扩展。

我在本地克隆它并运行 npm install

在 vscode 编辑器上按 f5 并出现错误

Process exited with code 1
(node:1404) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
internal/process/warning:44
Canceled
Run Code Online (Sandbox Code Playgroud)

为了解决这个警告,我发现了另一个 stackoverflow 问题 - (node:9374) 警告:要加载 ES 模块,请设置 "type": "module"

所以我设置"type":"module"package.json,然后按F5一次。

并出现另一个错误。

Process exited with code 1
Uncaught TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /mnt/c/vscode-php-debug/src/phpDebug.ts
Run Code Online (Sandbox Code Playgroud)

并在 …

node.js typescript visual-studio-code

14
推荐指数
4
解决办法
7235
查看次数

ts-node 执行带有模块导入和模块定义的打字稿

我尝试通过打字稿初始化数据库库。

我的 ts 是这样的:

import { User, UserRole } from '../entity/User';
import crypto from 'crypto';
import {dbManager, pwhash } from '..';

async function inituser() 
{
    const user = new User();
    user.email = 'sheng.lu@mq.edu.au';
    user.own_organization = []
    user.salt = crypto.randomBytes(16).toString('hex');
    user.password = pwhash("password", user.salt);
    user.role = UserRole.admin;
    await dbManager.save(user);
    const duser = await dbManager.findOne(User);
    return duser;
}
const duser = inituser();

console.log("Loaded users: ", duser);
Run Code Online (Sandbox Code Playgroud)

当我尝试通过 ts-node 运行脚本时:

npx ts-node db/initializers/inituser.ts
Run Code Online (Sandbox Code Playgroud)

有错误:

SyntaxError: Cannot use import statement outside a module
    at …
Run Code Online (Sandbox Code Playgroud)

typescript tsconfig package.json ts-node

10
推荐指数
2
解决办法
1万
查看次数

在 Next.js 中导入 ES 模块 ERR_REQUIRE_ESM

ky在 Next.js 项目中尝试使用时遇到了这个错误:

错误 [ERR_REQUIRE_ESM]:必须使用导入来加载 ES 模块:/foo/node_modules/ky/index.js

我认为问题在于 Webpack(或 Babel)正在将所有imports转换为require()s 但它ky是一个纯 ES 模块

ky在使用它之前通过动态导入让它工作,但它既不优雅也不高效。

const handleFormSubmit = async (event) => {
  const ky = (await import("ky")).default;

  const response = await ky
    .get('http://localhost/api/foo')
    .json();
};
Run Code Online (Sandbox Code Playgroud)

有什么建议?

javascript webpack babeljs es6-modules next.js

10
推荐指数
2
解决办法
2928
查看次数

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Visual Studio Code 上的未知文件扩展名“.ts”

我一直在对一些代码进行单元测试,但似乎无处可去,我收到了关于未知文件扩展名的错误(之前,我收到了有关如何无法识别某些类型的错误)。

这是我的 package.json:

{
  "name": "cgt-core-engine-mv",
  "description": "API container for other CGT plugins",
  "version": "1.01.03",
  "author": "CG-Tespy",
  "repository": {
    "type": "git",
    "url": "https://github.com/CG-Tespy/CGT_CoreEngine_MV"
  },
  "scripts": {
    "build": "tsc & (rollup -c)",
    "test": "mocha -r ts-node/register Test/**/*.ts"
  },
  "dependencies": {},
  "devDependencies": {
    "@types/chai": "^4.2.12",
    "@types/mocha": "^8.0.0",
    "@types/sinon": "^9.0.4",
    "chai": "^4.2.0",
    "mocha": "^8.0.1",
    "rollup": "^2.00.1",
    "rollup-plugin-node-resolve": "^5.2.0",
    "rollup-pluginutils": "^2.8.2",
    "sinon": "^9.0.2",
    "ts-node": "^8.10.2",
    "typescript": "^3.9.6"
  },
  "type": "module"
}
Run Code Online (Sandbox Code Playgroud)

这是我的 tsconfig.json:

{
    "compilerOptions": {
      "target": "es5",
      "module": "CommonJS",
      "esModuleInterop": true,

      "sourceMap": false, …
Run Code Online (Sandbox Code Playgroud)

unit-testing typescript visual-studio-code

7
推荐指数
1
解决办法
3972
查看次数

无法使用 .tsx 文件运行 ts-node

我已经使用 Typescript 和 JSX 创建了一个 React 应用程序(创建 .tsx 文件而不是 .ts),我尝试在具有热重载的 Docker 容器中运行它,但收效甚微。

我尝试过将 nodemon 与 ts-node 结合使用,但仍然遇到错误

[ERR_UNKNOWN_FILE_EXTENSION]:未知的文件扩展名“.tsx”

一种建议是从 package.json 文件中删除“type”:“module”,但这会导致错误;

语法错误:无法在模块外部使用 import 语句

我陷入了这个问题这个问题之间的循环

有谁知道如何解决让 ts-node 处理 tsx 文件的具体问题,或者更一般地说如何解决在 docker 容器内使用 JSX 热重载 typescript 的问题?

jsx typescript docker tsx ts-node

7
推荐指数
1
解决办法
4315
查看次数

使用 webpack typescript 和 esm 构建 Express 服务器

我正在尝试使用 构建一个小node.js + ts项目webpack

tsconfig.json
{
  "compilerOptions": {
    "lib": ["ESNext"],
    "target": "ES2020",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "esModuleInterop": true,
    "types": ["node"],
    "allowSyntheticDefaultImports": true,
    "rootDir": "./"
  },
}
Run Code Online (Sandbox Code Playgroud)

我将其添加到package.json行中"type": "module"

webpack.config.ts
import * as path         from 'path';
import * as webpack      from 'webpack';
import { fileURLToPath } from 'url';

const __dirname = path.dirname(fileURLToPath(import.meta.url));

const PATHS = {
  entry:  path.resolve(__dirname, 'src/server/index.ts'),
  output: path.resolve(__dirname, 'dist'),
};

const config: webpack.Configuration = {
  target:  'node',
  entry:   PATHS.entry,
  output:  { …
Run Code Online (Sandbox Code Playgroud)

node.js typescript webpack es6-modules

7
推荐指数
1
解决办法
2092
查看次数

无法运行 TS 节点 + ES 应用程序 - 要么得到“ERR_UNKNOWN_FILE_EXTENSION”或“new ERR_MODULE_NOT_FOUND”

我正在尝试将我的代码编译为 ES 代码(使用"type": "module"内部 package.json 和"module": "esnext"内部 tsconfig.json)。

我无法使用以下 3 种方法中的任何一种来运行它:

  1. ts-node src/server.ts结果是:
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for /Users/ilmoi/Dropbox/crypto_bc/dbricks/mvp/server/src/server.ts
    at new NodeError (node:internal/errors:363:5)
    at Loader.defaultGetFormat [as _getFormat] (node:internal/modules/esm/get_format:71:15)
    at Loader.getFormat (node:internal/modules/esm/loader:105:42)
    at Loader.getModuleJob (node:internal/modules/esm/loader:243:31)
    at Loader.import (node:internal/modules/esm/loader:177:17)
    at Object.loadESM (node:internal/process/esm_loader:68:5)
Run Code Online (Sandbox Code Playgroud)

这个线程来看,这似乎是 ts-node 的问题。

  1. 所以我尝试node --loader ts-node/esm ./src/server.ts得到这个:
(node:45543) ExperimentalWarning: --experimental-loader is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the …
Run Code Online (Sandbox Code Playgroud)

node.js typescript ts-node

6
推荐指数
2
解决办法
3733
查看次数