我想import fs from 'fs'在JavaScript中使用.这是一个示例:
import fs from 'fs'
var output = fs.readFileSync('someData.txt')
console.log(output)
Run Code Online (Sandbox Code Playgroud)
我运行文件时遇到的错误node main.js是:
(function (exports, require, module, __filename, __dirname) { import fs from 'fs
'
^^^^^^
SyntaxError: Unexpected token import
Run Code Online (Sandbox Code Playgroud)
我应该在节点中安装什么才能从其他地方导入模块和功能?
我目前正在使用MEAN Stack编写Web应用程序,并尝试在ECMAScript 6 JavaScript中编写代码; 但是,在使用导入和导出语法时,我在Chrome和Firefox中都出现错误.目前是否有任何浏览器完全支持ECMAScript 6?
请注意:我不是在询问浏览器何时支持ECMAScript 6.我问的是哪些浏览器支持ECMAScript 6导入和导出语法.请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla#Features_not_yet_supported_by_Firefox
javascript browser-support ecmascript-6 es6-module-loader es6-modules
我--experimental-modules在运行节点应用程序时使用该标志以使用ES6模块.
但是,当我使用此标志时,元变量__dirname不可用.是否有另一种方法可以获得__dirname与此模式兼容的相同字符串?
我知道在新的ES6模块语法中,JavaScript引擎不必评估代码以了解所有导入/导出,它只会解析它并"知道"要加载的内容.
这听起来像是在吊装.ES6模块是否悬挂?如果是这样,它们会在运行代码之前加载吗?
这段代码可以吗?
import myFunc1 from 'externalModule1';
myFunc2();
if (Math.random()>0.5) {
import myFunc2 from 'externalModule2';
}
Run Code Online (Sandbox Code Playgroud) 我不清楚为什么在nomodule支持ES6模块的新浏览器中存在该属性.
在HTML 5中,该type属性是可选的,默认为text/javascript:
type属性提供脚本的语言或数据的格式.如果该属性存在,则其值必须是有效的MIME类型.不得指定charset参数.如果属性不存在,则使用默认值"text/javascript".
它不默认<script type="module" src="module.js"></script>.此默认值已更改?如果没有,为什么nomodule有必要?我可以<script src="bundle.js"></script>不用nomodule吗?
我以编程方式使用 webpack,结合 typescript、ESM 和 jest。在一个玩笑测试中,我.js在导入 ES 模块时因不包含文件扩展名而收到错误。例如:
Module not found: Error: Can't resolve 'modulename' in '/path/components'
Did you mean 'modulename.js'?
BREAKING CHANGE: The request 'modulename' failed to resolve only because it was resolved as fully specified
(probably because the origin is strict EcmaScript Module, e. g. a module with javascript mimetype, a '*.mjs' file, or a '*.js' file where the package.json contains '"type": "module"').
The extension in the request is mandatory for it to be fully specified.
Add …Run Code Online (Sandbox Code Playgroud) 我可以在导入时构造默认导出对象吗?
给出以下导出语法(export default)
const foo = ...
function bar() { ... }
export default { foo, bar };
Run Code Online (Sandbox Code Playgroud)
以下导入语法是否有效JS?
import { foo, bar } from './export-file';
Run Code Online (Sandbox Code Playgroud)
我问,因为它在我的系统上工作,但我被告知它不应该按照规范工作.
我在两个单独的文件中有两个类,一个从另一个扩展.基类包含一些import使用节点模块的语句.我不清楚为什么派生类(在一个单独的文件中)不能识别基类!!! ???
有人可以澄清一下吗?
// UtilBase.ts
/// <reference path="../typings/node.d.ts" />
/// <reference path="../typings/packages.d.ts" />
import * as path from "path"; // <---- THIS LINE BREAKS THE BUILD!!!!
namespace My.utils {
export class UtilBase {
protected fixPath(value: string): string {
return value.replace('/', path.sep);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后
// UtilOne.ts
/// <reference path="UtilBase.ts" />
namespace My.utils {
export class UtilOne extends My.utils.UtilBase {
}
}
Run Code Online (Sandbox Code Playgroud)
编译后我得到:
src/UtilOne.ts(6,47): error TS2339: Property 'UtilBase' does not
exist on type 'typeof utils'
Run Code Online (Sandbox Code Playgroud) 只是想知道哪一个是使用导入的最佳方式:
import * as Foo from './foo';
VS:
import { bar, bar2, bar3 } from './foo';
例如,在效率方面,我使用webpack来捆绑所有JavaScript文件.即使我没有在主代码中使用它们,第一个实际上会导入所有内容吗?
我能找到的一些参考文献是:
在Airbnb风格指南中,他们建议不要使用通配符,因此总会有默认的导入对象,而这一点.
我更喜欢使用import x from 'y'语法,但我在网上看到的只是const path = require('path').
有没有办法使用这种语法导入路径模块?
es6-modules ×10
javascript ×7
ecmascript-6 ×5
node.js ×3
typescript ×2
hoisting ×1
html ×1
html5 ×1
import ×1
jestjs ×1
namespaces ×1
webpack ×1
wildcard ×1