相关疑难解决方法(0)

ES6导入语句在Node v8.4.0中不起作用

我正在使用最新版本的Node.js,即v8.4.0.但是,在导入和导出语句中,我收到错误:

import express from 'express';
                                                              ^^^^^^

SyntaxError: Unexpected token import
    at createScript (vm.js:74:10)
    at Object.runInThisContext (vm.js:116:10)
    at Module._compile (module.js:537:28)
    at Object.Module._extensions..js (module.js:584:10)
    at Module.load (module.js:507:32)
    at tryModuleLoad (module.js:470:12)
    at Function.Module._load (module.js:462:3)
    at Function.Module.runMain (module.js:609:10)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:598:3
Run Code Online (Sandbox Code Playgroud)

我应该安装什么Node.js版本才能使用这些ES6代码?

  • 操作系统 - Ubuntu 17.04
  • node -v:v8.4.0
  • npm -v:5.3.0

node.js

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

如何在云函数中使用 ES6(esm) 导入/导出

import functions from 'firebase-functions';
import UtilModuler from '@utilModuler'

exports.helloWorld = functions.https.onRequest((request, response) => {
 response.send("Hello from Firebase!");
});
Run Code Online (Sandbox Code Playgroud)

从 '@utilModuler' 导入 UtilModuler;^^^^^^^^^^

语法错误:Module._compile 处的意外标识符 (internal/modules/cjs/loader.js:721:23)

注意事项

我正在使用通过导入/导出编写的第三方库(@utilModuler)。可能的解决方法:

  1. Fork 库并生成带有汇总的 cjs 文件。
  2. esm就像一个魅力,但它会导致不必要的内存消耗

问题:有没有办法在谷歌云功能中使用混合导入 cjs 和 esm?(除了我上面描述的选项)

在部署功能中使用类似--experimental-modules会很好

javascript node.js google-cloud-functions es6-modules

7
推荐指数
2
解决办法
1246
查看次数

为什么节点使用不需要导入?

我正在学习node.js,想知道为什么它使用require语法而不是importReact使用的语法。

const Validator = require("validator");

VS

import Validator from "validator";

我相信import是es6,但我不认为这可以解释为什么未在节点中使用它。

node.js ecmascript-6 javascript-import

6
推荐指数
1
解决办法
4092
查看次数

导入node.js模块-SyntaxError:意外的标识符

我正在尝试进行以下导入

import  ResClient from 'resclient';
Run Code Online (Sandbox Code Playgroud)

结果

/home/arran/WebstormProjects/untitled1/app.js:2
import  ResClient from 'resclient';
        ^^^^^^^^^

SyntaxError: Unexpected identifier
    at new Script (vm.js:85:7)
    at createScript (vm.js:266:10)
    at Object.runInThisContext (vm.js:314:10)
    at Module._compile (internal/modules/cjs/loader.js:698:28)
    at Object.Module._extensions..js 
(internal/modules/cjs/loader.js:749:10)
    at Module.load (internal/modules/cjs/loader.js:630:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:570:12)
    at Function.Module._load (internal/modules/cjs/loader.js:562:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:801:12)
Run Code Online (Sandbox Code Playgroud)

我看过其他有关此错误的帖子。例如,这里是使用客户端javascript而不是节点的基于浏览器的问题。我是一个新手节点,所以无论基础如何,都希望对它有所指点。

node.js

6
推荐指数
1
解决办法
5615
查看次数

从字符串变量导入模块

我需要从内存变量中导入JavaScript模块。我知道可以使用SystemJSWebpack来完成。

但是我在任何地方都找不到合适的工作示例或文档。这些文档主要讨论动态导入.js文件。

基本上我需要像下面那样导入模块

let moduleData = "export function doSomething(string) { return string + '-done'; };"
//Need code to import that moduleData into memory
Run Code Online (Sandbox Code Playgroud)

如果有人可以指向文档,那将是很棒的

javascript typescript systemjs webpack angular

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

NodeJS ES6 导入找不到模块

我正在将一些代码重构为 ES6 导入模式。我正在使用node 13.7.0.

我的package.json文件"type": "module"在顶部,但是当我运行我的脚本时,我得到

错误:找不到从 /Users/otaviobonder/WebstormProjects/newTE/back/src/server.js 导入的模块 /Users/otaviobonder/WebstormProjects/newTE/back/src/lib/Queue

我运行脚本 node --require dotenv/config src/server.js

我不明白为什么。我queueimport Queue from "./lib/Queue";in导入server.js,而我的Queue.js文件有一个默认导出:

import Queue from "bull";
import redisConfig from "../config/redis";
import * as Sentry from "@sentry/node";

import * as jobs from "../jobs";

Sentry.init({ dsn: process.env.SENTRY_DSN });

const queues = Object.values(jobs).map(job => ({
    bull: new Queue(job.key, { redis: redisConfig }),
    name: job.key,
    handle: job.handle,
    options: job.options
}));

export default { …
Run Code Online (Sandbox Code Playgroud)

javascript node.js ecmascript-6

6
推荐指数
0
解决办法
5291
查看次数

节点-从另一个包中的模块导入类

我正在使用Node.js编写应用程序。具体来说,我正在使用Node v10.3.0。该应用程序位于的目录中./my-module-console/index.js。这个应用程式的的package.json档案位于./my-module-console/package.json。此应用程序引用了中定义的类./my-module/items/。应该注意的是,它my-module代表了自己的包装。该软件包在中定义./my-module/package.json。index.js中的代码如下所示:

'use strict';

import { Item } from '../my-module/items/item.js';

async function entry() {
  let item = await Item.FindById(1);
  console.log(item);
}

entry();
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此命令时,出现以下错误:

import { Item } from '../my-module/items/item.js';
       ^
SyntaxError: Unexpected token {
Run Code Online (Sandbox Code Playgroud)

我的进口货单有什么问题?在我看来,这是正确的。我误会了吗?

item.js

class Item {
    constructor() {}

    async static FindById(id) {
      console.log('finding item by id: ' + id);
    }
};

module.exports = Item;
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript import node.js

5
推荐指数
1
解决办法
5860
查看次数

Nodejs 导入与需要

在 Nodejs 中,语句import Obj from 'module_1'const Obj = require('module_1')? 这是 Obj 应该是构造函数的时候。我想知道,因为使用 import 语句似乎对我不起作用,所以我想知道是否有其他的编写方式。

javascript node.js

5
推荐指数
1
解决办法
8230
查看次数

如何从终端运行esnext文件

我有点新打字稿,我写了一个 SDK,我的 .tsconfig 看起来有点像这样

{
  "compilerOptions": {
    "moduleResolution": "node",
    "experimentalDecorators": true,
    "module": "esnext",
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "sourceMap": true,
    "strict": true,
    "target": "es2015",
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "noImplicitAny": false,
    "outDir": "./lib",
  },
  "compileOnSave": true,
  "include": [
    "src"
  ],
  "exclude": ["node_modules"]
}
Run Code Online (Sandbox Code Playgroud)

我使用tsc命令构建它。现在我创建了 localtest.js 文件,我在其中导入了这个文件

import getWorkspace from './lib/index'

const randomFunc = async () => {
   // some code 
}
randomFunc()
Run Code Online (Sandbox Code Playgroud)

然后在我的终端中使用以下命令运行它node localtest.js会引发以下错误

function (exports, require, module, __filename, __dirname) { import getWorkspace from './lib/index'
                                                                     ^^^^^^^^^^^^

SyntaxError: Unexpected …
Run Code Online (Sandbox Code Playgroud)

javascript node.js typescript

5
推荐指数
1
解决办法
202
查看次数

使用拦截器模拟 axios 时 (0 , _axios.default) 不是函数

我的应用程序有一个文件,它创建一个带有拦截器的 axios 实例,然后 api 使用该实例进行调用。问题是当我尝试为此 api 编写测试时,它失败并出现TypeError: (0 , _axios.default) is not a function错误。

下面是创建 axios 实例的 poc:

const axiosInstance = axios.create({
  timeout: 20000,
  paramsSerializer(params) {
    return qs.stringify(params, { indices: false });
  },
});

axiosInstance.interceptors.request.use((config) => {
  if (process.env.NODE_ENV === 'development') {
    logger.info(`Request sent to ${config.url}`, config.params);
  }

  return config;
}, (error) => Promise.reject(error));

axiosInstance.interceptors.response.use((response) => {
  if (process.env.NODE_ENV === 'development') {
    logger.info(`Response from ${response.config.url}`, response.data);
  }

  return parseBody(response);
}, (error) => parseError(error));

export default axiosInstance;
Run Code Online (Sandbox Code Playgroud)

这是使用 axios …

javascript node.js jestjs axios

5
推荐指数
1
解决办法
2676
查看次数