Javascript 无法在JS中的服务器端要求标记
当我声明:Javascript 无法在JS中的服务器端要求标记,javascript,node.js,express,riot.js,Javascript,Node.js,Express,Riot.js,当我声明:require('./public\u html/Tags/blog\u post\u details.tag')时,我得到以下错误: E:\WORKSPACE\NETBEANS_WORKSPACE\MyProject\public_html\Tags\blog_post_details.tag:1 (function (exports, require, module, __filename, __dirname) { <blog_post_details >
require('./public\u html/Tags/blog\u post\u details.tag')
时,我得到以下错误:
E:\WORKSPACE\NETBEANS_WORKSPACE\MyProject\public_html\Tags\blog_post_details.tag:1
(function (exports, require, module, __filename, __dirname) { <blog_post_details >
^
SyntaxError: Unexpected token <
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:387:25)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (E:\WORKSPACE\NETBEANS_WORKSPACE\MyProject\server.js:7:1)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
node
require
函数仅识别Javascript文件中以.js
结尾的文件,.json
用于json文件,.node
用于节点运行时的二进制扩展名。对于Javascript文件,如果节点的模块系统可以找到文件或模块(即在Node\u modules
下),则可以省略尾部的.js
从您的示例中,似乎您正在尝试从客户端代码使用require
。除非您使用browserify
、webpack
或另一个客户端捆绑程序(提供自己的require
客户端版本),否则您无法使用它
正如我在下面的评论中所指出的,您提供的视频链接显示了通过
webpack
加载标记文件的客户端代码。您需要检查webpack的配置,以确保它正确绑定了您的标记文件,以便交付到浏览器。再次从视频中,示例代码从/tags/filename.tag
加载其标记文件,该路径的根由webpack定义。我从3:32的示例()中看到……使用require
进行标记是可行的,但我不确定其抛出错误的原因。该示例使用webpack作为绑定器。时间2:09,它似乎正在从客户端的本地位置加载标记文件(通过网页包)。我会检查webpack配置文件,确保它在发送到浏览器的包中包含您的标记文件。我已经有了webpack配置。用config detailsHm更新了这个问题,webpack config似乎加载了*.tag
文件,所以我猜加载程序代码是区分大小写的。你的标签在/tags
下,它希望它们在/tags
下。嗯,我以为预加载程序正在加载它,所以我在加载程序中注释了它。将编译并检查
var path = require('path');
var webpack = require('webpack');
module.exports = {
entry: './index.js',
output: {
path: __dirname,
filename: 'public_html/assets/js/bundle.js'
},
resolveLoader: {
root: path.join(__dirname, 'node_modules')
},
module: {
preLoaders: [{
test: /\.tag$/,
exclude: /node_modules/,
loader: 'riotjs-loader',
query: {
//type: 'none'
//compact: true
}
}],
loaders: [
/*{
test: /\.tag$/,
loader: 'tag',
exclude: /node_modules/
},*/
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
//commenting because of this issue https://github.com/mapbox/mapbox-gl-js/issues/3422
// presets: ['es2015']
}
}
]
},
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.ProvidePlugin({
riot: 'riot'
})
]
};