我试图在节点中获取es6导入的挂起,并尝试使用此示例中提供的语法:
Cheatsheet链接:https://hackernoon.com/import-export-default-require-commandjs-javascript-nodejs-es6-vs-cheatsheet-different-tutorial-example-5a321738b50f
我正在查看支持表:http://node.green/,但无法找到支持新导入语句的版本(我尝试查找文本import/require)我目前正在运行节点8.1. 2并且还认为,由于cheatsheet是指.js文件,它应该与.js文件一起使用.
当我运行代码时(取自cheatsheet的第一个例子):
import { square, diag } from 'lib';
Run Code Online (Sandbox Code Playgroud)
我收到错误:SyntaxError:意外的令牌导入.
参考lib我正在尝试导入:
//------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
return x * x;
}
export function diag(x, y) {
return sqrt(square(x) + square(y));
}
Run Code Online (Sandbox Code Playgroud)
我缺少什么,如何让节点识别我的import语句?
我有一个ES6模块right.mjs。将其作为参数执行即可node:
$ node --version
v8.10.0
$ node --experimental-modules right.mjs
(node:4492) ExperimentalWarning: The ESM module loader is experimental.
executing right module
Run Code Online (Sandbox Code Playgroud)
executing right module 是模块的输出。
与此相反,REPL中的以下输入等待进一步的输入:
$ node --experimental-modules
> (node:4526) ExperimentalWarning: The ESM module loader is experimental.
> import 'right.mjs';
...
Run Code Online (Sandbox Code Playgroud)
我不明白为什么。
与:
> import './right.mjs';
...
Run Code Online (Sandbox Code Playgroud)
尝试require导致:
> require('./right.mjs');
Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /home/xxx/right.mjs
at Object.Module._extensions..mjs (module.js:686:11)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require …Run Code Online (Sandbox Code Playgroud) 在我的 React 项目中,我需要在 3 个打字稿项目之间共享模型(在我的例子中是打字稿接口)。所以我选择了 bit.env 并将所有模型导入到https://bit.dev/model/index/~code,一切都很好。
然后我需要验证模型中的字段,因此我将实用程序函数添加到https://bit.dev/model/index/~code#util.ts并将其部署到 bit.env
当我尝试在我的项目#2(我保存 firebase 云函数的地方)中使用此辅助函数时,我开始遇到以下错误。
/Users/vinoth.gopu/Documents/mine/oss/Cloud/functions/node_modules/@bit/model.index/dist/index.js:1
export * from './admin';
^^^^^^
SyntaxError: Unexpected token 'export'
at wrapSafe (internal/modules/cjs/loader.js:1101:16)
at Module._compile (internal/modules/cjs/loader.js:1149:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1205:10)
Run Code Online (Sandbox Code Playgroud)
我在项目 #2 中的代码
export const placeOrder = functions
.runWith({
memory:'256MB'
})
.region(cloudConfig.firebase.region)
.firestore
.document('Orders/{OrderId}')
.onCreate((snap, context) => {
const orderDetails = snap.data() as UserOrders;
try {
//check if all fields of interface implemented
if(isOrder(orderDetails)) { // PROBLEM HERE
//do something
}
Run Code Online (Sandbox Code Playgroud)
正如上面代码中所指出的,我可以使用该模型项目中的所有接口,但辅助函数会抛出错误消息。
我参考了这些文章和链接